Python logging 模块如何使用

  • 想在一个程序中使用多个 logger (一个是根 logger ),先设置了根 logger 的属性,然后子模块中设置了一个 logger ; 但是发现有一个问题是子 logger 写的日志也会写到根 logging 的文件中。

有没有什么方法设置子模块的 logger 写的日志 不会写到根 logger 的文件中,请教各位大佬


Python logging 模块如何使用
3 回复

Python的logging模块是标准库里的日志工具,用起来挺简单的。给你个直接能跑的示例:

import logging

# 基础配置(控制台输出)
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S'
)

# 获取logger实例
logger = logging.getLogger(__name__)

# 记录不同级别日志
logger.debug('调试信息')
logger.info('普通信息')
logger.warning('警告信息')
logger.error('错误信息')
logger.critical('严重错误')

如果想同时输出到文件和控制台,可以这样配置:

import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)

# 控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

# 文件处理器
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.DEBUG)

# 设置格式
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)

# 使用
logger.info('程序启动')
logger.debug('详细调试信息')

关键点就几个:basicConfig做简单配置,getLogger获取记录器,不同处理器控制输出位置,Formatter定义日志格式。实际项目里建议用配置文件或者字典配置,这样改起来方便。

总结:按需配置logger、handler和formatter就行。


set propagate = False

感激不尽

回到顶部