python(6)-logging 日志模块

本文深入探讨了Python中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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值