Как выбрать обработчик при входе в Python - PullRequest
2 голосов
/ 10 декабря 2011

Я работаю над проектом с 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 Ответ

1 голос
/ 10 декабря 2011

Я думаю, что вы можете выбрать:

  • Приоритет один над другим (т.е. SysLogHandler получает сообщения INFO или выше, в то время как FileHandler получает DEBUG или выше)
  • Используйте два разных экземпляра регистратора.

FWIW, обычные документы регистрации могут быть трудными для чтения.Вместо этого взгляните на Logging HOWTO и Logging Cookbook для чего-то более легко усваиваемого.

...