有没有一种方法可以使使用logging
模块的Python日志(log)自动将stdoutin addition中的内容输出到它们应该放到的日志(log)文件中?例如,我希望所有打到logger.warning
、logger.critical
、logger.error
的呼叫都转到它们想要的地方,但另外总是要复制到stdout
.这是为了避免重复消息,如:
mylogger.critical("something failed")
print "something failed"
有没有一种方法可以使使用logging
模块的Python日志(log)自动将stdoutin addition中的内容输出到它们应该放到的日志(log)文件中?例如,我希望所有打到logger.warning
、logger.critical
、logger.error
的呼叫都转到它们想要的地方,但另外总是要复制到stdout
.这是为了避免重复消息,如:
mylogger.critical("something failed")
print "something failed"
所有日志(log)输出都由处理程序处理;只需在根记录器中添加一个logging.StreamHandler()
.
下面是一个配置流处理程序(使用stdout
而不是默认的stderr
)并将其添加到根记录器的示例:
import logging
import sys
root = logging.getLogger()
root.setLevel(logging.DEBUG)
handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
root.addHandler(handler)