【问题标题】:efficient way to attach multiple handler to single logger将多个处理程序附加到单个记录器的有效方法
【发布时间】:2021-11-25 09:37:54
【问题描述】:

我有多个处理程序,我想将它附加到单个处理程序。有没有有效的方法来做到这一点。

logger = logging.getLogger('logger')
logger.setLevel(logging.DEBUG)
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

summary = logging.FileHandler(filename='text_logger.txt', mode='w')
summary.setLevel(logging.INFO)

overview = logging.FileHandler(filename='overview.log', mode='w')

logger.addHandler(console_handler)
logger.addHandler(summary)
logger.addHandler(overview)

我必须多次使用addHandler。有没有更好的方法来做到这一点,比如提供列表。我快速浏览了文档,但没有找到。我可能错过了什么。

我正在考虑定义dict 是一种选择。但是建议。

【问题讨论】:

  • 没有。顺便说一句,我在创建处理程序后添加它们 - 它使更改更直观,因为与它旁边的处理程序相关的所有代码。多亏了这一点,我实际上创建了条件处理程序(例如,仅当存在 -v/--verbose 标志时才会使用标准输出处理程序)。 :)

标签: python logging


【解决方案1】:

addHandler() 所做的是将处理程序附加到记录器的列表中。因此,如果您想使用单个表达式添加多个处理程序,您可以通过直接扩展列表来做到这一点: logger.handlers.extend([console_handler, summary, overview])

请注意addHandler() 明确是线程安全的,因此绕过它会失去这种保护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 2015-10-17
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多