日志的等级
- debug 最详细的日志信息,典型应用场景是问题诊断
- info 信息详细程度仅次于debug,通常只记录关键节点信息,用于确认一切都是按照预期般工作
- warning 当某些不期望的事情发生是记录的信息(如磁盘可用空间较低)此时应用程序还是正常运行的
- error 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
- critical 当发生验证错误,导致应用程序不能继续运行时记录的信息
logging模块的使用
- 使用logging提供的模块级别的函数
logging.debug(msg,*args,kwargs) # 创建一条严重级别为debug的日志记录
logging.info(msg,*args,kwargs) # 创建一条严重级别为info的日志记录
logging.warning(msg,*args,kwargs) # 创建一条严重级别为warning的日志记录
logging.error(msg,*args,kwargs) # 创建一条严重级别为error的日志记录
logging.critical(msg,*args,kwargs) # 创建一条严重级别为critical的日志记录
logging.log(msg,*args,kwargs) # 创建一条严重级别为log的日志记录
logging.basicConfig(**kwargs) # 对root logger进行一次性配置
logging日志格式输出
logging.basicConfig()函数说明
image.png
logging模块的格式字符串
image.png
举个例子
import logging
my_format = '%(asctime)s-%(filename)s-%(module)s-%(lineno)d'
logging.basicConfig(
filename='my.log',
level=logging.INFO, # 这里设置的等级后,后续logger的输出只会输出严重级别大于等于这个级别的日志,如这里设置INFO,后续的debug级别日志就不输出
format=my_format # format接收字符串,内容参考logging\__init__.py中class formatter中的说明
)
logging.info(msg='info') # 创建一条严重级别为info的日志记录
logging.debug(msg='debug') # 创建一条严重级别为debug的日志记录
logging.warning(msg='warning') # 创建一条严重级别为warning的日志记录
logging.error(msg='error') # 创建一条严重级别为error的日志记录
logging.critical(msg='critical') # 创建一条严重级别为critical的日志记录
------------my.log中的内容--------------------
2021-11-30 17:46:35,316-test.py-test-11
2021-11-30 17:46:35,316-test.py-test-13
2021-11-30 17:46:35,316-test.py-test-14
2021-11-30 17:46:35,316-test.py-test-15
- 使用logging日志系统的四大组件
-
loggers提供应用程序代码直接使用的接口
logger类方法 -
handlers用于将日志记录发送到指定的目的位置
Handler相关类
Handler相关子类 - filters提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其他的日志记录将会被忽略)
- formatters用于控制日志信息的最终输出格式
举个例子
import logging
import logging.handlers
import datetime
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
rf_handler = logging.handlers.TimedRotatingFileHandler('all.log', when='midnight', interval=1, backupCount=7, atTime=datetime.time(0, 0, 0, 0))
rf_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
f_handler = logging.FileHandler('error.log')
f_handler.setLevel(logging.ERROR)
f_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s"))
logger.addHandler(rf_handler)
logger.addHandler(f_handler)
logger.debug('debug message')
logger.info('info message')
logger.warning('warning message')
logger.error('error message')
logger.critical('critical message')
-----------------all.log----------------
2021-11-30 18:11:34,262 - DEBUG - debug message
2021-11-30 18:11:34,262 - INFO - info message
2021-11-30 18:11:34,262 - WARNING - warning message
2021-11-30 18:11:34,262 - ERROR - error message
2021-11-30 18:11:34,263 - CRITICAL - critical message
--------------error.log----------------
2021-11-30 18:11:34,262 - ERROR - test_four_module.py[:21] - error message
2021-11-30 18:11:34,263 - CRITICAL - test_four_module.py[:22] - critical message
网友评论