python-logging模块,思路方法解释,个人理解

本文深入探讨了Python中logging模块的使用方法,解释了为何在大型程序中使用logging优于print语句,通过实例演示了如何自定义日志配置,包括设置日志级别、格式和处理器,以提高程序的调试效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

人之所以痛苦,那是因为你在成长。--------magic_guo

python logging模块的作用非常强大,使用方法灵活多变,但是万变不离其宗,我们要追根溯源,找到一条学习的思路,才能将知识彻底理解掌握。3

我们为什么要使用logging模块
在一些小的程序中我们使用print即可调试程序,但是随着我们的程序越来越大,越来越模块化,使用print已经不足以满足我们的调试需求,因为程序复杂多变,而且比较耗时。
使用logging模块,我们可以在日志文件中查看日志信息,从而根据需求来改写我们的代码。

下面介绍使用方法:
基本上我们要自己定义自己的日志程序,毕竟python自带的basicConfig满足不了我们的需求,因此凡事自己定义日志程序,大多都要经历以下几个步骤:

使用步骤:
1.创建日志对象logger
2.logger设置日志级别
3.创建处理器handler
4.handler设置日志级别
5.设置日志格式
6.将格式添加到处理器handler
7.将处理器handler添加到日志对象logger

使用python自带的basicConfig:

# getLogger(name)里面的名字可以自己起,也可以使用系统自定义'__name__'
logger = logging.getLogger('root')
# 在basicConfig里面设置参数
logging.basicConfig(level=logging.INFO, filename='test.log', format='%(asctime)s-%(levelname)s-%(name)s-%(message)s')

logger.debug('debug log')
logger.info('info log')
logger.warning('warning log')
logger.error('error log')
logger.critical('critical log')

结果如下:
这是在test.log里面的内容

2020-03-29 19:52:36,768-INFO-info log
2020-03-29 19:52:36,768-WARNING-warning log
2020-03-29 19:52:36,768-ERROR-error log
2020-03-29 19:52:36,768-CRITICAL-critical log
2020-03-29 20:09:40,064-INFO-__main__-info log
2020-03-29 20:09:40,064-WARNING-__main__-warning log
2020-03-29 20:09:40,064-ERROR-__main__-error log
2020-03-29 20:09:40,064-CRITICAL-__main__-critical log
2020-03-29 20:10:23,511-INFO-root-info log
2020-03-29 20:10:23,511-WARNING-root-warning log
2020-03-29 20:10:23,511-ERROR-root-error log
2020-03-29 20:10:23,511-CRITICAL-root-critical log

自定义log程序:

# 创建日志对象
logger = logging.getLogger('root')
# logger设置日志等级
logger.setLevel(level=logging.INFO)
# 创建处理器,StreamHandler是一个将日志输出到控制台的handler
handler = logging.StreamHandler()
# handler设置日志级别
handler.setLevel(logging.INFO)
# 设置日志格式
formatter = logging.Formatter('%(asctime)s-%(levelname)s-%(message)s')
# 将格式添加到handler
handler.setFormatter(formatter)
# 将handler添加到logger
logger.addHandler(handler)

logger.debug('debug log')
logger.info('info log')
logger.warning('warning log')
logger.error('error log')
logger.critical('critical log')

控制台结果如下:

2020-03-29 20:16:55,116-INFO-info log
2020-03-29 20:16:55,116-WARNING-warning log
2020-03-29 20:16:55,116-ERROR-error log
2020-03-29 20:16:55,117-CRITICAL-critical log

在比较大的程序中,我们一般将自己编写的程序存储在一个文件中,只返回logger,在其他程序中直接调用logger即可,这样避免重复调用,降低了程序的耦合度,使程序更加灵活。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值