默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,
这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG),
默认的日志格式为日志级别:Logger名称:用户输出消息。
函数式简单配置
import logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename='test.log', filemode='w') logging.debug('debug message') #低级别 #拍错信息 logging.info('info message') #正常信息 logging.warning('warning message')#警告信息 logging.error('error message') #错误信息 logging.critical('critical message')#高级别的 #严重错误信息 try: int(input('num>>>')) except ValueError: logging.error('输入的值类型不对!')
basicconfig:简单,但能解决的事情相对较少
不能解决中文乱码问题
不能同时在文件和屏幕上输出
此时解决了中文乱码问题,也可同时在文件和屏幕上输出---程序的充分解耦,让程序变的高可定制
import logging #创建一个logger对象 logger = logging.getLogger() fh = logging.FileHandler('log.log',encoding='utf-8') #创建一个屏幕打印对象 sh = logging.StreamHandler() formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') formatter2 = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - [line:%(lineno)d] - %(message)s') #文件操作符 和 格式关联 fh.setFormatter(formatter) sh.setFormatter(formatter2) #logger对象 和 文件操作符关联 logger.addHandler(fh) logger.addHandler(sh) logging.debug('debug message') logging.info('info message') logging.warning('警告信息') logging.error('error message') logging.critical('critical message')
总结:
有5种级别的日志记录模式:debug、info、warning、error、critical
2种配置方式:basicconfig、log对象