我必须编写代码将消息记录到文件和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