除了日志之外,使Python记录器将所有消息输出到stdout

问题:

有没有办法使用logging模块自动将Python记录到stdout in addition到他们应该去的日志文件?例如,我希望所有来电logger.warninglogger.criticallogger.error的电话都转到他们预期的地方,但总是复制到stdout。这是为了避免重复邮件,如:

mylogger.critical("something failed")
print "something failed"

回答:

所有日志输出都由处理程序处理;只需向根记录器添加一个logging.StreamHandler()
以下是配置流处理程序(使用stdout而不是默认stderr)并将其添加到根记录器的示例:

import logging
import sys

root = logging.getLogger()
root.setLevel(logging.DEBUG)

ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
root.addHandler(ch)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Making Python loggers output all messages to stdout in addition to log

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 6 = 3