将多个处理程序附加到单个记录器的有效方法
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()
明确地是线程安全的,因此绕过它您将失去这种保护。
我有多个处理程序,我想将其附加到单个处理程序。有什么有效的方法吗
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()
明确地是线程安全的,因此绕过它您将失去这种保护。