使用以下python代码:
import logging
log1 = logging.getLogger("module1")
log2 = logging.getLogger("module2")
如何设置将 log1 写入 fileName1 和 log2 写入 filename2 ?
默认情况下,它们都写入STDERR,而不是全部写入文件
谢谢
答案 0 :(得分:0)
直接将相关处理程序添加到每个记录器,例如
log1.addHandler(logging.handlers.FileHandler(fileName1)
log2.addHandler(logging.handlers.FileHandler(fileName1)
您可能需要在这些处理程序上设置任何格式化程序。
请注意,此时,发送到任一记录器的消息将仍写入stderr:logging
是处理程序树,记录记录从“叶”记录器开始,由每个记录器处理,然后再发送给其父记录器,直到根记录器为止。路径中的每个记录器都可能将消息打印到某些输出(例如文件,系统日志,流等),并发送给其父项。
有几种方法可以避免/配置/改善这种行为:
logger.propagate = False
),在这种情况下,日志记录将在相关记录器处“停止”,并且不再进一步上升NullHandler
设置为根记录器的处理程序,以使其不打印收到的消息(如果消息到达根记录器且未配置处理程序,则会自动设置StreamHandler(sys.stderr)
),这将允许所有消息到达根记录器,并且仅被那里丢弃,如果您以后想添加其他处理程序(例如,将所有日志消息一次发送到syslog),这将非常方便。点)logging.getLogger().disabled = True
),但这没有真正记录在案,而且有点虚假