我必須編寫代碼將消息記錄到文件和stdout。我通過日誌模塊閱讀,並能夠完成任務。但只是想知道是否有任何有效的方法來執行關聯處理程序的Logger對象?有沒有一種簡單的方法可以將處理程序添加到記錄器對象中?
logger = logging.getLogger('TEST')
logger.setLevel(logging.DEBUG)
#create a file handler
file_log_handler = logging.FileHandler('logfile.log',mode='w')
#logger.addHandler(file_log_handler)
#create a stderr_handler
stderr_log_handler = logging.StreamHandler()
stderr_log_handler.setLevel(logging.ERROR)
#logger.addHandler(stderr_log_handler)
# Create formattar
formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")
# Add Handler to Formattar
file_log_handler.setFormatter(formatter)
stderr_log_handler.setFormatter(formatter)
# add logger to Handler
logger.addHandler(file_log_handler,stderr_log_handler)
# application code:
logger.info('debug message')
logger.warning('This is a warning message')
logger.debug('This is a debug message')
logger.error('This is a error message')
在上面的代碼,我有兩個處理器(file_log和stderr_log),並加入類似這樣的
logger.addhandler(file_log_handler)
logger.addhandler(stderr_log_handler)
的作品,但在單個語句像這樣給出來的時候:
logger.addhandler(file_log_handler,stderr_log_handler)
不起作用。我試着用List作爲List,但沒有運氣。
有沒有一種有效的方法來實現這一目標?
沒有,API只允許添加單個處理器對象。爲什麼這麼低效?這不像你在這裏增加1000個處理程序。 –
謝謝@fredtantini ..對不起,如果我使用低效misappropirate一詞。我只是想知道是否提供多個處理程序addHandler()是否支持.. – user596922