神奇的python(四)之logging日志文件系统
(1) 简介
日志调试输出信息
日志级别: critical > error > warning > info > debug,notset 级别越高打印的日志越少,反之亦然,即
debug : 打印全部的日志(notset等同于debug)
info : 打印info,warning,error,critical级别的日志
warning : 打印warning,error,critical级别的日志
error : 打印error,critical级别的日志
critical : 打印critical级别
(2) 使用方法
- 输出消息至终端
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至终端import logging
import oslogger_fmt ='%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log') #输出路径及路径名
formatter = logging.Formatter(logger_fmt) #输出格式logger_console_handler = logging.StreamHandler() #输出到终端
logger_console_handler.setFormatter(formatter) # 设置输出格式logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_console_handler)
else:logger.removeHandler(logger_console_handler)
logger.setLevel(logging.INFO) #设置输出级别logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
- 输出消息至文件
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至指定路径import logging
import oslogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log') #存储路径(路径名要正确)
print(Logneme)
formatter = logging.Formatter(logger_fmt)
logger_file_handler = logging.FileHandler(Logneme)
logger_file_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)
else:logger.removeHandler(logger_file_handler)
logger.setLevel(logging.INFO) logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
- 输出消息至文件并定期(每天)删除
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至文件并定期(每天)删除import logging
import os
import re
from logging.handlers import TimedRotatingFileHandlerlogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log')
formatter = logging.Formatter(logger_fmt)
logger_file_handler = TimedRotatingFileHandler(filename=Logneme, when='MIDNIGHT', interval=1, backupCount=2)
logger_file_handler.suffix = "%Y-%m-%d.log"
logger_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
logger_file_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)
else:logger.removeHandler(logger_file_handler)
logger.setLevel(logging.INFO)logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
&1)TimedRotatingFileHandler()
功能:用于定期删除日志文件
参数:
filename: 文件名
when: ‘W’, ‘D’, ‘H’, ‘M’, ‘S’, ‘MIDNIGHT’ 分别代表’周’,‘天’,‘时’,‘分’,‘秒’
interval: 时间间隔
backupCount:日志数目
比如,我上面的例子即是每隔一天产生一个日志,超过两个日志将覆盖旧的日志
&2)logger_file_handler.suffix
功能:在日志名后加上后缀
&3)logger_file_handler.extMatch
功能:匹配日志名的后缀
注意:想要实现周期性删除任务,这三个函数都是必要的
- 输出消息至文件超过指定大小删除
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 输出消息至文件并文件超过指定大小清零import logging
import os
from logging.handlers import RotatingFileHandlerlogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log')
formatter = logging.Formatter(logger_fmt)
logger_file_handler = RotatingFileHandler(filename=Logneme, maxBytes = 1*1024, backupCount=2)
logger_file_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)
else:logger.removeHandler(logger_file_handler)
logger.setLevel(logging.INFO)logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
- 终极版:可输出日志到终端并且输出到文件且文件定期删除
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 终极版:可输出日志到终端并且输出到文件且文件定期删除import logging
import os
import re
from logging.handlers import TimedRotatingFileHandlerlogger_fmt = '%(asctime)s\tFile \"%(filename)s\",line %(lineno)s\t%(levelname)s: %(message)s'
Logneme = os.path.join(os.path.abspath('.'), 'debug', 'Log', 'log')
formatter = logging.Formatter(logger_fmt)
logger_file_handler = TimedRotatingFileHandler(filename=Logneme, when='MIDNIGHT', interval=1, backupCount=2)
logger_file_handler.suffix = "%Y-%m-%d.log"
logger_file_handler.extMatch = re.compile(r"^\d{4}-\d{2}-\d{2}.log$")
logger_file_handler.setFormatter(formatter)logger_console_handler = logging.StreamHandler()
logger_console_handler.setFormatter(formatter)logger = logging.getLogger()
if not len(logger.handlers):logger.addHandler(logger_file_handler)logger.addHandler(logger_console_handler)
else:logger.removeHandler(logger_file_handler)logger.removeHandler(logger_console_handler)
logger.setLevel(logging.INFO)logger.debug('StartBoot')
logger.info('StartBoot')
logger.warning('StartBoot')
logger.error('StartBoot')
logger.critical('StartBoot')
以下隐藏内容为源代码,有需求可以下载,当作是对本站的支持,谢谢。
[erphpdown]解压密码:ZMJPY123[/erphpdown]
神奇的python(四)之logging日志文件系统相关推荐
- Python爬虫笔记——logging日志函数的使用
logging官网介绍 python logging 日志使用 1.日志级别 日志一共分成5个等级,从低到高分别是:DEBUG INFO WARNING ERROR CRITICAL. DEBUG:详 ...
- PYthon常用模块 logging 日志
一 (简单应用) import logging logging.debug('debug message') logging.info('info message') logging.warning( ...
- python中的logging日志
logging使用 import logging import os from logging import handlers from constants.constants import Cons ...
- python 技术篇-使用logging日志模块自定义时间格式
首先看一下效果图: 下面是我定义的日志格式: import logginglogging.basicConfig(filename = path + 'log_' + today_date + '.t ...
- 操作系统服务:logging日志记录模块
许多应用程序中都会有日志模块,用于记录系统在运行过程中的一些关键信息,以便于对系统的运行状况进行跟踪. 在.NET平台中,有非常著名的第三方开源日志组件log4net,c++中,有人们熟悉的log4c ...
- python log日志_Python中logging日志的四个等级和使用
1. logging日志的介绍 在现实生活中,记录日志非常重要,比如:银行转账时会有转账记录:飞机飞行过程中,会有个黑盒子(飞行数据记录器)记录着飞机的飞行过程,那在咱们python程序中想要记录程序 ...
- python logging日志分割_python logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 1. logging日志模块介绍 python ...
- python logging日志模块以及多进程日志
本篇文章主要对 python logging 的介绍加深理解.更主要是 讨论在多进程环境下如何使用logging 来输出日志, 如何安全地切分日志文件. 原出处博客 1. logging日志模块介绍 ...
- python log文件如何不写入syslog_python 自动化之路 logging日志模块
logging 日志模块 http://python.usyiyi.cn/python_278/library/logging.html 中文官方 http://blog.csdn.net/zyz51 ...
最新文章
- Android零基础入门第30节:两分钟掌握FrameLayout帧布局
- 深入解析JNA—模拟C语言结构体
- 解决sourceTree的git clone 报SSH密钥认证失败的问题
- VSFTPD 安装与配置
- 微软开放技术热烈祝贺开源社成立!
- 在access中一列称为_ACCESS考试_笔试
- 【转】中国历史上下五千年之朝代变迁
- 服务器显示raid报警,Raid为什么会出现故障?RAID/服务器恢复
- 【基于Python的Selenium2自动化测试】04 - 模拟126邮箱的登录
- 如何利用一维数组实现二维数组的多列自由升降序排序过程详解
- 【Python】html格式转md格式
- 基于JDBC的JavaWeb开发项目之——网上教务系统
- 系统重构的原则代码重构的原则
- I.MX8M mini物联网开发板框架及屏幕接口详解
- 群晖、威联通NAS硬盘本地化,使用RaiDrive通过WebDAV实现内网挂载
- linux qnx 开发平台,QNX学习笔记之QNX Momentics IDE开发工具使用笔记
- MAC OS部署 TOMCATJ2EE项目
- pd.to_numeric
- 【Hard to Park】Estimating Parking Difficulty at Scale
- PFM格式图像和读取middlebury 数据集
热门文章
- 如何使用facenet详解_松下电吹风如何使用 松下电吹风使用方法及维护【详解】...
- php 三种传递函数,php – 是否可以将传递函数传递给包含的文件?
- python爬取网页上的特定链接_自学python爬虫二:如何正常操作urllib2通过指定的URL抓取网页内容...
- C++OpenCV:三角形插值、线面的交点
- Bootstrap-CSS-排版
- 0x00000116
- 自动论文生成器 python_python生成器
- python 字符串去重且相同字符最多出现2次_【Python】获取字符串中出现次数最多/少的字符...
- phpcmsV9 邮箱注册:邮箱验证(不改代码、含演示截图) - 配置篇
- 陌屿授权系统v2.0源码