持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情
在学习代码过程中,遇到了记录日志即log的设置,一开始没看懂,所以专门记一篇笔记来记录下。
在项目开发中,都不可避免的使用到日志。没有日志虽然不会影响项目的正确运行,但是没有日志的项目可以说是不完整的。
Python 的 logging 模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志记录提供了一组便利功能,用于简单的日志记录用法。
零.为什么要使用Logging模块
因为:
- 这样子所有python模块都可以参与日志记录
- 它提供了大量具有灵活性的功能
一.Logging中三个自带的模块
- StreamHandler
定义:能够将日志信息输出到sys.stdout, sys.stderr 或者类文件对象(也就是说它能够支持write()和flush()方法的对象) class logging.StreamHandler(stream=None)
- FileHandler
继承自StreamHandler,并且能将日志信息输出到磁盘文件上(即输出成一个文件) class logging.FileHandler(filename, mode='a', encoding=None, delay=False)
- NullHandler
空操作handler,logging模块自带的。无参
二.日志等级 日志级别等级排序:critical > error > warning > info > debug
级别越高打印的日志越少,反之亦然,即
- debug : 打印全部的日志( notset 等同于 debug )
- info : 打印 info, warning, error, critical 级别的日志
- warning : 打印 warning, error, critical 级别的日志
- error : 打印 error, critical 级别的日志
- critical : 打印 critical 级别
三.主要操作 将日志信息记录到文件: 实例:
logging.basicConfig(filename='F:/example.log', level=logging.DEBUG)
logging.debug('This message should go to the log file')
实际操作中用到的
logger = logging.getLogger('xxx') #记录什么文件的日志
logger.setLevel(logging.DEBUG) #log的等级
formatter = logging.Formatter(
'%(asctime)s - %(name)s - %(leveltime)s: - %(message)s', #时间格式
datefmt='%Y-%m-%d %H:%M:%S')
fh = logging.FileHandler('xxx') #日志文件主要记录在哪里
fh.setLevel(logging.DEBUG)
fh.setFormatter(formatter) #设置日期格式
ch = logging.StreamHandler() #日志信息输出到对象里
ch.setLevel(logging.DEBUG)
使用的时候要import logging这个包,才能正常使用