最近在写flask的web程序,中间涉及到对日志的配置,这边记录以下使用的情况
我的代码使用的是python的logging的模块,python的logging模块和java的log4j有点相似;
基本流程如下:
(1)创建logger,并设置logger的日志级别
(2)创建handler
(3)创建format(包括打印输出格式和日期格式)
(4)将format添加到hander中
(5)将handler添加到logger中
注:一个logger可以设置多个hander,一个handler对应一个输出路径,即一个logger打印输出可以输出到多个文件或者是命令行中;
具体代码如下:
#coding:utf-8
import logging.config
from logging.handlers import TimedRotatingFileHandler
log_path = './logTest.log'
backup_count = 0
duration = 'midnight'
#创建logger
logger = logging.getLogger()
#设置日志级别为INFO
logger.setLevel(logging.INFO)
#创建handler,每天创建一个文件
handler = TimedRotatingFileHandler(log_path,when=duration,backupCount=backup_count)
#设置日期格式
date_format = '%Y-%m-%d %H:%M:%S'
#设置打印的格式
output_format = '[%(asctime)s][%(filename)s][line:%(lineno)d][%(levelname)s] %(message)s'
#创建format
format = logging.Formatter(output_format, date_format)
handler.setFormatter(format)
logger.addHandler(handler)
logger.info('hello world!')
按照该代码输出的日志如下:
[2021-01-09 19:51:08][loggingTest.py][line:26][INFO] hello world!
注:本处我们使用的logger打印到logTest.og中,当然可以设置成多个handler,可以打印到多个文件当中;
另外,通过output_format可以设置打印的格式;
date_format设置[2021-01-09 19:51:08]这个格式的时间;
TimedRotatingFileHandler:
TimedRotatingFileHandler是创建固定时间间隔的日志,这里采用了默认的设置,每天创建一个文件