繁体   English   中英

在 Python 中为同一模块中的不同输出创建多个记录器

[英]Creating multiple loggers in Python to different outputs in the same module

所以我想在同一个模块中创建多个记录器

log = logging.getLogger('FirstLogger')
plog = logging.getLogger('SecondLogger')

我想分别配置每个记录器。

所以我为 plog 添加了一个 FileHandler,它只需要 logging.INFO 或更高版本,而用于 log 的 FileHandler 将需要 logging.DEBUG 或更高版本。

我创建了一个 init_logger() 函数,它接受记录器的实例来执行配置

def init_logger(logger, fmode, cmode)

所以我希望 FirstLogger 登录到我为它单独创建的文件并以调试级别登录。 我会做

log = logging.getLogger('FirstLogger')
init_logger(log,logging.DEBUG,logging.INFO)

plog = logging.getLogger('SecondLogger')
init_logger(plog,logging.INFO,logging.INFO)

在 init_logger 中,我为 FileHandler 指定了不同的文件,并根据传递给 init_logger 的内容设置级别。

flog = logging.FileHandler(logfile)
flog.setLevel(fmode)
flog.setFormatter(...)

console = logging.StreamHandler()
console.setLevel(cmode)
console.setFormatter(...)

log.addhandler(flog)
log.addHandler(console)

我遇到的问题是,即使 'log' 将控制台设置级别设置为 INFO 并将 FileHandler 设置为 DEBUG,我仍然只能在文件和控制台中获得 INFO。 我无法弄清楚我正在做的事情有什么问题。

您将文件处理程序的级别设置为 DEBUG,但未将记录器本身的级别设置为 DEBUG

log.setLevel(min(cmode, fmode))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM