【问题标题】:Where does Python root logger store a log?Python根记录器在哪里存储日志?
【发布时间】:2010-10-28 11:54:03
【问题描述】:

我正在使用 Freebase Python 库。它在执行之前创建一个日志:

self.log = logging.getLogger("freebase")

此日志在文件系统中的什么位置? 它不在执行目录或 tmp 中。

【问题讨论】:

  • 我注意到在没有任何解释的情况下对这个问题投了反对票。如果投反对票的人能让我知道原因,我将不胜感激,这样我以后肯定会更清楚。
  • 要将日志保存到文件中,我们必须使用 logging.basicConfig(filename = 'blah',...) 如果我们不使用它,记录器只会将内容打印到命令行,或标准输出。

标签: python logging freebase


【解决方案1】:

该调用不存储任何内容。它只是创建一个记录器对象,可以根据需要进行绑定和配置。

所以如果在你的 Python 代码中,你要添加

logging.basicConfig(level=logging.WARNING)

所有警告和错误都会记录到标准输出(basicConfig 就是这样做的),包括 Freebase 进行的调用。如果您想登录到文件系统或其他目标,您需要参考logging module documentation 以获取更多信息。您也不妨参考Logging HOWTO

【讨论】:

  • +1 杰森所说的。你也可以做例如logging.basicConfig(filename='/path/to/file.log', filemode='w', level=logging.DEBUG) 将所有内容简单记录到文件中。
  • 那么,在@Matt Norris 的问题中定义self.log 之后,对self.logger.debug 的后续调用将不会保存到磁盘(假设没有进行中间调用)?
  • @dbliss 如果您按照 Vinay 的建议配置了日志记录,随后对 self.log.debug 的调用将被写入文件。如果您按照我的回答配置了日志记录,则对self.log.debug 的调用将被忽略,因为它们低于logging.WARNING 的指定级别。
  • 如果您根本不去配置它怎么办? (我正在尝试对我没有编写的包进行反向工程,其中未配置记录器。)我的问题是,self.logger.debug 调用的默认保存位置是什么?
  • 如果代码不配置任何处理程序(即没有调用basicConfig 或以其他方式配置日志记录),默认行为是向标准错误发出警告及以上消息和警告以下消息(包括INFO 和 DEBUG) 被丢弃。
猜你喜欢
  • 2018-08-13
  • 2019-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2019-08-15
  • 2011-06-04
相关资源
最近更新 更多