python(6)-logging 日志模块

logging的日志分为5个级别分别为debug(), info(), warning(), error(), critical()

先来看一下简单的代码:

logging.basicConfig(filename='example.log', level=logging.INFO, format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
logging.warning('is when this event was logged.')

filename 是指日志文件的名称,可以带上路径,代码中是当前目录下的example.log文件;level是指info以上级别的日志,format就是格式化日志了:以‘日期时间  日志内容’的格式记录, datafmt就是格式化日志中的时间。

logging.warnging() 是将一条warning日志写入日志, 打开example.log日志看一下:

2016-03-02 12:17:41 is when this event was logged.
2016-03-22 11:34:51 is when this event was logged.

看到日志已经成功记录,而且格式都是指定的格式。

而更多的时候,我们不只是将日志记录到文件这么简单,我们需要的是将日志记录到文件的同时输出到屏幕上:

#创建logger
logger = logging.getLogger("TEST-LOG")  #这里的TEST-lOG在后面会用到,这个是自定义的
logger.setLevel(logging.DEBUG)          #全局的日志级别

#创建屏幕输出
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)              #屏幕输出的级别

#创建文件处理和级别
fh = logging.FileHandler("access.log")      #日志文件
fh.setLevel(logging.WARNING)         #写入日志的级别

#创建日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')   #name就是TEST-LOG

#添加格式
ch.setFormatter(formatter)
fh.setFormatter(formatter)

#添加ch, fh到logger
logger.addHandler(ch)
logger.addHandler(fh)

#写入日志
logger.debug("debug message")
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

在上面代码中,有一个全局的日志级别,而屏幕和文件各自又定义了自己的日志级别,那是以哪个为准呢? 经过我的测试,我的理解是这样的:

5个级别的日志debug, info, waring,error, criticcal, 级别越高就越严重,谁的级别高就按谁的来。

原文地址:https://www.cnblogs.com/huangxm/p/5305690.html