logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志的保存路径、日志文件回滚等。
日志的等级(从低到高)
- debug:调试代码用的,信息比较信息。
- info:输出正确的信息,按照正确的代码运行。
- warning:警告,但不影响正常运行。
- error:错误问题, 一些功能无法执行。
- critical:严重的错误,表明程序本身可能无法继续运行。
默认等级是warning及以上的问题被抓到。
logging模块
logging模块包括logger、handler、filter、formatter四个部分。
- logger:记录器,用于设置日志采集。
- handler:处理器,将日志记录发送至合适的路径。
- filter:过滤器,提供了更好的粒度控制,可以决定输出哪些日志记录。
- formatter:格式化器,指明最终输出中日志的格式。
配置logging的三种方式
-
基础配置,
logging.basicConfig(filename='config.log', filename='w', format='%(asctime)s-%(name)s-%(levelname)s-%(message)s', level=logging.INFO)
-
使用配置文件的方式配置logging,使用
fileConfig(filename, defaults=None, disable_existing_loggers=True)
函数来读取配置文件。 -
使用一个字典方式来写配置信息,然后使用
dictConfig(dict, defaults=None, disable_existing_loggers=True)
函数来完成logging的配置。
日志回滚
比如日志文件是chat.log,当chat.log达到指定的大小之后,RotatingFileHandler自动把文件改名为chat.log.1。不过,如果chat.log.1已经存在,会先把chat.log.1重命名为chat.log.2。最后重新创建 chat.log,继续输出日志信息。
示例
now_time = datetime.datetime.now().strftime('%Y-%m-%d-%H-%M-%S')
logging.basicConfig(level=logging.DEBUG)
formatter = logging.Formatter('%(asctime)s: %(levelname)s %(message)s')
# log
Rthandler = RotatingFileHandler(filename='%s%s%s'%(args.log_folder,now_time,'.log'), \
maxBytes=2*1024*1024, backupCount=10)
Rthandler.setLevel(logging.DEBUG)
Rthandler.setFormatter(formatter)
logging.getLogger('').addHandler(Rthandler)
参考资料
logging.basicConfig()简单使用
python之logging.basicConfig
Python日志文件的回滚模块RotatingFileHandler.日志文件大小,日志文件数量