如何在Python中选择日志处理器

8 投票
1 回答
3079 浏览
提问于 2025-04-17 08:06

我正在做一个Python项目,遇到了一些关于日志记录的困扰。我的日志记录器有两个处理器,一个是系统日志(syslog),另一个是文件日志(file log),它会同时把日志发送到这两个地方。有时候我只想把日志发送到其中一个处理器,我该怎么选择使用哪个处理器呢?谢谢大家的帮助...

global my_Sysloghandler
global my_logger, my_log_handler

my_Sysloghandler=logging.handlers.SysLogHandler()
my_log_handler= logging.FileHandler('/var/log/{0}.log'.format(__project__))
my_log_handler.setFormatter(logging.Formatter('%(asctime)s %(message)s'))                                                                              
my_log_handler.setLevel(level)
my_logger= logging.getLogger('my_logger')
my_logger.addHandler(my_log_handler)
my_logger.addHandler(my_Sysloghandler)

my_logger.debug('This log is sent to both handler but I want to send it only my_logger')

1 个回答

5

我觉得你可以考虑以下两种选择:

  • 优先选择一个记录器(比如说,SysLogHandler 只记录 INFO 级别及以上的信息,而 FileHandler 记录 DEBUG 级别及以上的信息)
  • 使用两个不同的记录器实例。

顺便说一下,普通的日志记录文档可能不太好理解。你可以看看 日志记录入门指南日志记录食谱,这些内容更容易理解。

撰写回答