使 Python 记录器将除日志文件之外的所有消息输出到标准输出

新手上路,请多包涵

有没有办法使用 logging 模块使 Python 日志记录自动输出到标准输出 以及 它们应该去的日志文件? For example, I’d like all calls to logger.warning , logger.critical , logger.error to go to their intended places but in addition always be copied to stdout .这是为了避免重复消息,例如:

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

原文由 user248237 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 483
2 个回答

所有日志记录输出都由处理程序处理;只需将 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)

原文由 Martijn Pieters 发布,翻译遵循 CC BY-SA 4.0 许可协议

记录到标准输出的最简单方法:

 import logging
import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

原文由 Eyal 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题