将多个处理程序附加到单个记录器的有效方法

efficient way to attach multiple handler to single logger

我有多个处理程序,我想将其附加到单个处理程序。有什么有效的方法吗

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。有没有更好的方法来做到这一点,比如提供列表。我很快浏览了 doc 但没有找到它。我可能漏掉了什么。

我在考虑定义 dict 是一个选项。不过建议。

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

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