这是我参与更文挑战的第15天,活动详情查看: 更文挑战
在项目开发中,调试是必不可少的,logging模块为我们调试提供了极大的便利。
logging模块的简单配置
日志等级
logging提供了5个日志等级,利用不同的日志函数,消息可以按某个等级记入日志
级别 | 日志函数 | 描述 |
---|---|---|
DEBUG | logging.debug() | 最低级别。用于小细节。通常只有在诊断问题时,你才会关心这些消息 |
INFO | logging.info() | 用于记录程序中一般时间的信息,或确认一切工作正常 |
WARNING | logging.warning() | 用于表示可能的问题,它不会阻止程序的工作,但将来可能会 |
ERROR | logging.error() | 用于记录错误,它导致程序做某事失败 |
CRITICAL | logging.critical() | 最高级别。用于表示致命的错误,它导致或将要导致程序完全停止工作 |
logging初始化
import logging
logging.basicConfig()
复制代码
创建logging实例对象
logger = logging.getLogger()
复制代码
设置级别
logger.setLevel(logging.DEBUG)
复制代码
指定logger实例对象的handler
在日志文件达到指定的大小后将清空原来的日志文件,比如log.1设置了1M,满1M后将新建log.2进行记录日志,如此循环
from 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
logger.addHandler(handler)
复制代码
完整代码
import logging
from logging import handlers
# logging初始化
logging.basicConfig()
# 创建logger实例对象
logger = logging.getLogger()
# 设置logger对象调试级别
logger.setLevel(logging.DEBUG)
# 为logger对象创建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"))
# 把handler绑定到logger对象中
logger.addHandler(handler)
复制代码
logger日志使用
现在我们就可以把需要的日志信息通过调用logging提供的函数写入到日志文件中
n = 0
try:
print(10 / n)
except Exception as e:
print('e:',e)
logging.error(e)
logger.error("发生错误")
复制代码
查看日志文件
2018-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函数都会失效,禁用的级别一定要对应代码中你写的那个级别对应
当没禁用时
n = 0
try:
print(10 / n)
except Exception as e:
print('e:',e)
logging.error(e)
logger.error("发生错误1")
# logging.disable(logging.ERROR)
logger.error("发生错误2")
复制代码
--------------查看日志文件-----------
2018-08-02 15:44:35,524 - root - ERROR - 24 - division by zero
2018-08-02 15:44:35,524 - root - ERROR - 25 - 发生错误
2018-08-02 15:44:35,524 - root - ERROR - 27 - 发生错误2
复制代码
禁用后
n = 0
try:
print(10 / n)
except Exception as e:
print('e:',e)
logging.error(e)
logger.error("发生错误1")
logging.disable(logging.ERROR)
logger.error("发生错误2")
复制代码
--------------查看日志文件-----------
2018-08-02 15:48:09,237 - root - ERROR - 24 - division by zero
2018-08-02 15:48:09,237 - root - ERROR - 25 - 发生错误
复制代码
近期评论