2011-12-10 46 views
1

我正在使用python開發一個項目,我需要幫助登錄部分。我的記錄器有兩個處理程序(系統日誌和文件日誌),它將日誌發送到它們兩個。有時我只需要發送日誌中的一個。我如何選擇使用處理程序?感謝您的幫助......如何在登錄python時選擇處理程序

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') 
+0

您的代碼提取不完整。 'level'的價值是什麼?將'my_log_handler'的級別設置爲'DEBUG',並將'my_Sysloghandler'的級別設置爲'INFO',結果所有記錄爲'DEBUG'的結果都只會被記錄到'my_log_handler'中。 – gecco

回答

1

我覺得你的選擇是:

  • 一個確定優先級比其他(即SysLogHandler獲得INFO消息或以上,而得到的FileHandler DEBUG或以上)
  • 使用兩個不同的記錄器實例。

FWIW,常規日誌文檔可能很難通讀。相反,請查看Logging HOWTOLogging Cookbook以獲取更易於消化的物質。