logging日志介绍:
很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等,print也可以输入日志,但是logging相对print来说更好控制输出在哪个地方,怎么输出及控制消息级别来过滤掉那些不需要的信息。
日志级别:
- 1,NOSET 0 等于没写,废话。
- 2,debug, 10, 调试,一些额外信息,备注,往往和主体功能无关。 日报里面的备注
- 3,info, 20 主体功能的信息。 日报,做了些啥?
- 4,warning, 30, 警告, 下次可能要出错了。 交警叔叔警告
- 5,error, 40, 犯错,违法。抢红灯
- 6, critical, 50, 极其严重。抢银行
设置级别:
当设成 debug 的时候,只有 高于,等于该级别的才会打印。
当你设成 warning, 只有 warning, error, critical才会打印
logging日志框架 - 1, 日志收集器 logger: 日记本
- 2, 日志收集器级别 level
- 3, 日志处理器准备 handler, 不同记号的笔
- 4, 日志处理器级别设置
- 5, logger.addHandler(hadler),添加到处理器中
- 6, 设置日志格式 format, 日期:重要程度:分类(工作,生活):内容 fmt = logging.Format()
- 7, 添加日志处理器, handler.setFormat(fmt)
代码示例如下:
import logging
logger = logging.getLogger('python25')logger.setLevel('DEBUG')
handler = logging.FileHandler('log.txt')
console_handler = logging.StreamHandler()
console_handler.setLevel('DEBUG')
handler.setLevel('WARNING')
logger.addHandler(handler)
logger.addHandler(console_handler)
fmt = logging.Formatter('%(filename)s-%(lineno)d - %(name)s-%(levelname)s-%(message)s')
handler.setFormatter(fmt)logger.debug('111')
logger.info('hello')
logger.warning('world')
logger.error('ceshi123')
logger.critical('bengkuile23425252')
从代码中可以看出控制台console_handler设置的级别为:debug
控制台输出结果
输入到log.txt的handler的级别为warning
所以:log.txt为:
封装logging,logging封装成类
用的时候直接调用 LoggerHandler类的方法即可
import loggingclass LoggerHandler(logging.Logger):def __init__(self, name='root', level='DEBUG', file=None, format='%(filename)s:%(lineno)d:%(name)s:%(levelname)s-%(message)s'):super().__init__(name)self.setLevel(level)fmt = logging.Formatter(format)if file:file_handler = logging.FileHandler(file)file_handler.setLevel(level)file_handler.setFormatter(fmt)self.addHandler(file_handler)stream_handler = logging.StreamHandler()stream_handler.setLevel(level)stream_handler.setFormatter(fmt)self.addHandler(stream_handler)