在项目开发中,调试是必不可少的,logging模块为我们调试提供了极大的便利。
logging模块的简单配置
日志等级
logging提供了5个日志等级,利用不同的日志函数,消息可以按某个等级记入日志
级别 | 日志函数 | 描述 |
---|---|---|
DEBUG | logging.debug() | 最低级别。用于小细节。通常只有在诊断问题时,你才会关心这些消息 |
INFO | logging.info() | 用于记录程序中一般事件的信息,或确认一切工作正常 |
WARNNING | logging.warning() | 用于表示可能的问题,它不会阻止程序的工作,但将来可能会 |
ERROR | logging.error() | 用于记录错误,它导致程序做某事失败 |
CRITICAL | logging.critical() | 最高级别。用于表示致命的错误,它导致或将要导致程序完全停止工作 |
1 | import logging |
创建logging实例对象
1 | logger = logging.getLogger() |
设置级别
1 | logger.setLevel(logging.DEBUG) |
指定logger实例对象的handler
在日志文件达到指定的大小后将清空原来的日志文件,比如log.1设置了1M,满1M后将新建log.2进行记录日志,如此循环1
2
3
4
5from logging import handlers
# 创建handler对象,指定日志文件位置以及大小,日志份数
handler = handlers.RotatingFileHandler("logs/log", maxBytes=1024*50, backupCount=5)
# 指定handler对象的日志输出格式
handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(lineno)s - %(message)s"))
logger实例对象添加handler
1 | logger.addHandler(handler) |
完整代码
1 | import logging |
logger日志使用
现在我们就可以把需要的日志信息通过调用logging提供的函数写入到日志文件中1
2
3
4
5
6
7n = 0
try:
print(10 / n)
except Exception as e:
print('e:',e)
logging.error(e)
logger.error("发生错误")
查看日志文件1
22018-08-02 13:54:30,576 - root - ERROR - 24 - division by zero
2018-08-02 13:54:30,576 - root - ERROR - 25 - 发生错误
日志禁用
只需要在需要禁用日志的地方插入logging.disable(logging.logging_level)即可,后面的logging对应的loggle_level函数都会失效,禁用的级别一定要对应代码中你写的那个级别对应
当没禁用时
1 | n = 0 |
禁用后
1 | n = 0 |