logging 模块
logging
模块的核心点主要包括以下几个方面:基本配置、日志级别、日志记录器(Logger)、处理器(Handler)、格式器(Formatter)和过滤器(Filter)
当然可以,系统学习 logging
模块的核心点主要包括以下几个方面:基本配置、日志级别、日志记录器(Logger)、处理器(Handler)、格式器(Formatter)和过滤器(Filter)。下面我们详细讲解每个核心点,并提供相应的示例。
1. 基本配置
logging.basicConfig()
是最简单的配置方法,它用于设置日志记录的基本配置。
这种模式相当如是一种简配模式,比较快速,但不够灵活
import logging logging.basicConfig( level=logging.INFO, # 设置日志级别 format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', # 日志格式 filename='app.log', # 日志文件名 filemode='w' # 写入模式,'w' 表示覆盖写,'a' 表示追加写 ) logging.info("这是一个信息日志") logging.warning("这是一个警告日志") logging.error("这是一个错误日志")
2. 日志级别
日志级别决定了日志的严重程度,从低到高有:DEBUG
、INFO
、WARNING
、ERROR
、CRITICAL
。在配置时设置的日志级别决定了低于该级别的日志信息不会被记录。
logging.debug("这是调试信息") logging.info("这是普通信息") logging.warning("这是警告信息") logging.error("这是错误信息") logging.critical("这是严重错误信息")
3. 日志记录器(Logger)
日志记录器是 logging
模块的核心对象,用于记录日志。可以通过 logging.getLogger(name)
创建或获取一个记录器。
logger = logging.getLogger('my_logger') logger.setLevel(logging.DEBUG) logger.debug("这是调试信息") logger.info("这是普通信息")
4. 处理器(Handler)
处理器决定了日志发送到哪里。常用的处理器有 StreamHandler
(输出到控制台)和 FileHandler
(输出到文件)。
# 创建处理器 console_handler = logging.StreamHandler() file_handler = logging.FileHandler('file.log') # 设置处理器日志级别 console_handler.setLevel(logging.DEBUG) file_handler.setLevel(logging.ERROR) # 将处理器添加到记录器 logger.addHandler(console_handler) logger.addHandler(file_handler)
5. 格式器(Formatter)
格式器决定了日志的输出格式。通过 logging.Formatter
可以设置日志格式。
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(formatter) file_handler.setFormatter(formatter)
6. 过滤器(Filter)
过滤器用于对日志进行更细粒度的控制,决定哪些日志应该被记录。
class MyFilter(logging.Filter): def filter(self, record): return '关键字' in record.getMessage() logger.addFilter(MyFilter()) logger.info("这是一个包含关键字的信息") logger.info("这是一条普通信息")
综合示例
综合以上内容,下面是一个完整的示例,展示了如何配置和使用 logging
模块:
这种模式就比较自由,配置灵活。
import logging # 创建记录器 logger = logging.getLogger('my_logger') logger.setLevel(logging.DEBUG) # 创建处理器 console_handler = logging.StreamHandler() file_handler = logging.FileHandler('app.log') # 设置处理器日志级别 console_handler.setLevel(logging.DEBUG) file_handler.setLevel(logging.ERROR) # 创建格式器并设置给处理器 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') console_handler.setFormatter(formatter) file_handler.setFormatter(formatter) # 将处理器添加到记录器 logger.addHandler(console_handler) logger.addHandler(file_handler) # 添加过滤器 class MyFilter(logging.Filter): def filter(self, record): return '关键字' in record.getMessage() logger.addFilter(MyFilter()) # 记录日志 logger.debug("这是调试信息") logger.info("这是包含关键字的信息") logger.warning("这是警告信息") logger.error("这是错误信息") logger.critical("这是严重错误信息")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!