Python---logging日志模块
1.说明
官方文档:https://docs.python.org/zh-cn/3/howto/logging.html
什么时候使用日志?
对于简单的日志使用来说日志功能提供了一系列便利的函数。它们是 debug()
,info()
,warning()
,error()
和 critical()
。想要决定何时使用日志,请看下表,其中显示了对于每个通用任务集合来说最好的工具。
2.日志级别
3.logging基础使用
# 日志记录模块 import logging
# 日志的默认输入级别为 warning,会记录 warning,error,critical logging.debug('------debug------') # 细节信息,仅当诊断问题时适用 logging.info('------info------') # 确认程序按预期运行 logging.warning('------warning------') # 警告级别--->表明有已经或即将发生的意外。程序仍按预期进行 logging.error('------error------') # 由于严重的问题,程序的某些功能已经不能正常执行 logging.critical('------critical-----') # 严重的错误,表明程序已不能继续执行
运行结果:
# 日志记录模块 import logging
# 配置日志的记录级别 logging.basicConfig(level=logging.DEBUG) logging.debug('------debug------') logging.info('------info------') logging.warning('------warning------') logging.error('------error------') logging.critical('------critical-----')
运行结果:
# 日志记录模块 import logging ''' 日志的默认记录级别为 警告级别warning ,会记录waring,error,critical 级别的日志 配置日志的记录级别 level=logging.DEBUG 配置日志的模式 filemode='a' 追加模式 将日志记录到文件中 filename='study.log' ''' logging.basicConfig(filename='study1.log',filemode='a',level=logging.DEBUG) logging.debug('------debug------') logging.info('------info------') logging.warning('------warning------') logging.error('------error------') logging.critical('------critical-----')
运行结果:
此时,我们会发现,当把日志记录保存到日志文件中后,在控制台中就不在进行打印了
4.logging实战,保存到文件中且打印在控制台中
# 日志保存到文件中并打印在控制台中 # 使用日志模块的 handlers import logging # 创建日志对象 logger = logging.getLogger("api") logger.setLevel(logging.DEBUG) # 设置日志级别 stream = logging.StreamHandler() # 创建 stream handler 类的实例化对象 logger.addHandler(stream) # 将输出流对象添加到 logger 对象中 # 创建文件处理的handler file_handler = logging.FileHandler(filename='study2.log') file_handler.setLevel(logging.WARNING) # 设置文件的日志级别 logger.addHandler(file_handler) # 将文件处理添加到 logger 对象中 logger.debug('--debug--') logger.info('--info--') logger.warning('--warning--') logger.error('--error--') logger.critical('--critical--')
运行结果:
5.添加日志格式
官方文档:https://docs.python.org/zh-cn/3/library/logging.html#logrecord-attributes
# 日志保存到文件中并打印在控制台中 # 使用日志模块的 handlers import logging # 创建日志对象 logger = logging.getLogger("api") logger.setLevel(logging.DEBUG) # 设置日志级别 # 创建格式 [%(asctime)s]-->创建时间 [%(levelname)s]-->记录级别 %(message)s-->记入日志的消息 format_sz = logging.Formatter("[%(asctime)s] [%(levelname)s] %(message)s") # 创建 stream handler 类的实例化对象 stream = logging.StreamHandler() stream.setLevel(logging.INFO) # 设置文件的日志级别 stream.setFormatter(format_sz) # 设置日志格式 logger.addHandler(stream) # 将输出流对象添加到 logger 对象中 # 创建文件处理的handler file_handler = logging.FileHandler(filename='study2.log') file_handler.setLevel(logging.WARNING) # 设置文件的日志级别 file_handler.setFormatter(format_sz) # 设置日志格式 logger.addHandler(file_handler) # 将文件处理添加到 logger 对象中 logger.debug('--debug--') logger.info('--info--') logger.warning('--warning--') logger.error('--error--') logger.critical('--critical--')
运行结果: