【问题标题】:Simplest way to set up python logging to stdout将 python 日志记录到标准输出的最简单方法
【发布时间】:2019-01-10 17:51:34
【问题描述】:

我有以下内容来设置一个基本的记录器来打印 cron 作业中的输出:

import logging
log=logging.getLogger()
log.setLevel(logging.DEBUG)
log.addHandler(logging.StreamHandler())
log.info('hi')

这是最直接的方法,还是有更好的方法?

【问题讨论】:

  • 你可以只写一个文件吗?一位同事曾经向我指出这一点,对于我的情况来说,这就足够了。当然更简单,并且避免了容易破坏的依赖。编辑:我最初误解了你的问题,认为日志记录不适合你。只要日志记录有效,您的问题就是有效的。不幸的是,我不知道答案是什么

标签: python logging


【解决方案1】:

如果您只需要将消息打印到标准输出,那么logging.basicConfig 是您列出的配置的便捷快捷方式。它将创建一个StreamHandler,将默认的Formatter 附加到它,并将处理程序附加到根记录器。

import logging

logging.basicConfig(level=logging.DEBUG, stream=sys.stdout)
logging.getLogger().info('hi')

查看文档了解更多配置可能性;例如,

logging.basicConfig(filename='some.log', level=logging.DEBUG)

将配置写入文件some.log 而不是标准输出。

请注意,如果已经配置了记录器,logging.basicConfig 将不会做任何事情(这意味着已经有处理程序附加到根记录器)。所以这段代码:

import logging

logging.getLogger().addHandler(logging.FileHandler(filename='some.log'))
logging.basicConfig(level=logging.DEBUG)

将不再配置日志到标准输出;你必须自己做。

【讨论】:

  • AFAICT, basicConfig 默认在 STDERR 中输出,而不是像 OP 要求的那样 STDOUT。您需要将stream=sys.stdout 添加到basicConfig
  • @Hilikus 你说的很对,谢谢指出!
猜你喜欢
  • 2016-09-24
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 2018-05-27
  • 1970-01-01
  • 2020-10-12
  • 2016-04-26
相关资源
最近更新 更多