如何通过最少配置设置两种Python日志级别:全局INFO、Kafka相关WARNING
实现Python日志分级输出的最简方案
你的需求只需要在现有基础配置上做一行额外设置就能实现,不用改动原有结构:
- 保留你原有的
basicConfig配置,它已经完成了根日志的级别(INFO)、输出格式和输出目标(stdout)设置,所有未单独配置的日志器都会继承这个规则。 - Kafka相关日志都是从名为
kafka的日志器(或其子模块日志器,比如kafka.consumer)输出的,直接获取这个日志器并将级别设为WARNING即可。
修改后的完整代码:
import logging # 原有的基础日志配置 logging.basicConfig(format='[%(asctime)s] [%(levelname)s] - %(message)s', level=logging.INFO) # 单独将Kafka日志级别设为WARNING kafka_logger = logging.getLogger('kafka') kafka_logger.setLevel(logging.WARNING) # 测试验证(可选) logging.info("普通INFO日志,会正常输出") kafka_logger.info("Kafka的INFO日志,不会被输出") kafka_logger.warning("Kafka的WARNING日志,会正常输出")
原理说明:
- Python日志系统是层级结构,根日志器设为INFO后,所有子日志器默认继承该级别。
- 给
kafka日志器单独设置级别后,它和下属的子日志器都会使用这个级别,不再继承根日志的INFO,从而实现“仅Kafka日志用WARNING,其余保持INFO”的效果。 - 无需额外添加Handler,
basicConfig已经给根日志器绑定了输出到stdout的Handler,所有日志最终都会通过该Handler输出。
内容的提问来源于stack exchange,提问作者Goku
相关产品推荐
相关产品推荐

