python Handler
Handler决定日志输出目标(如控制台、文件)。setLevel控制 Handler 处理的最低日志级别。设置日志输出格式。你可以为 logger 添加多个 Handler,实现多元化日志输出。日志方法(如)必须传入日志内容。
·
一、Handler(处理程序)是什么?
- Handler 是 Python
logging模块中的“处理程序”,用于决定日志输出到哪里(如控制台、文件、网络等)。 - 一个 logger 可以有多个 Handler,每个 Handler 可以有不同的输出目标、日志级别和格式。
二、常用 Handler 类型
| Handler 类名 | 作用说明 |
|---|---|
| StreamHandler | 输出到控制台(标准输出) |
| FileHandler | 输出到文件 |
三、Handler 的常用方法
1. setLevel(level)
- 作用:设置该 Handler 处理的最低日志级别。只有大于等于该级别的日志才会被该 Handler 处理。
- 示例:
sh.setLevel(logging.INFO)
2. setFormatter(formatter)
- 作用:为 Handler 设置日志格式(Formatter)。
- 示例:
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') sh.setFormatter(formatter)
四、你的代码详解
import logging
logger = logging.getLogger() # 获取根记录器
logger.setLevel(logging.DEBUG) # 设置记录器的日志级别为DEBUG
sh = logging.StreamHandler() # 创建一个控制台输出的处理程序
logger.addHandler(sh) # 将处理程序添加到记录器
logger.debug()
解释
-
logger = logging.getLogger()- 获取根记录器(root logger)。
-
logger.setLevel(logging.DEBUG)- 设置 logger 的日志级别为 DEBUG,表示 DEBUG 及以上级别的日志都会被处理。
-
sh = logging.StreamHandler()- 创建一个StreamHandler,用于将日志输出到控制台(标准输出)。
-
logger.addHandler(sh)- 将 StreamHandler 添加到 logger。此后,logger 产生的日志会通过 sh 输出到控制台。
-
logger.debug()- 这里缺少参数,应传入日志内容,如
logger.debug('调试信息')。 - 正确写法:
logger.debug('调试信息')
- 这里缺少参数,应传入日志内容,如
五、完整示例(含格式化)
import logging
logger = logging.getLogger()
logger.setLevel(logging.DEBUG)
# 创建控制台Handler
sh = logging.StreamHandler()
sh.setLevel(logging.INFO) # 只显示INFO及以上日志
# 设置格式
formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
sh.setFormatter(formatter)
logger.addHandler(sh)
logger.debug('调试信息') # 不会显示(因为sh的级别是INFO)
logger.info('普通信息') # 会显示
logger.warning('警告信息') # 会显示
六、总结
- Handler 决定日志输出目标(如控制台、文件)。
- setLevel 控制 Handler 处理的最低日志级别。
- setFormatter 设置日志输出格式。
- 你可以为 logger 添加多个 Handler,实现多元化日志输出。
- 日志方法(如
logger.debug())必须传入日志内容。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)