【问题标题】:How to use logging for print statements inside a python package?如何在 python 包中使用日志记录打印语句?
【发布时间】:2021-09-27 21:12:41
【问题描述】:

我正在开发一个 Django 项目,该项目使用一些将语句打印到控制台的包(其中一些包是由我制作的)。这些打印语句代表重要信息,不能仅通过注释打印来删除。

有人可以指导我如何将此类打印语句重定向到记录器吗?

另外,在开发包时将内容打印到控制台的最佳做法是什么?

【问题讨论】:

  • “将内容打印到控制台的最佳实践” - 使用日志模块。
  • 通过使用日志模块,您包的用户可以选择如何自己处理日志事件。他们可能没有控制台。他们可能希望输出到控制台和文件。他们可能想要发送电子邮件。通过使用 print(...) 可以让用户更难处理这些问题。

标签: python django logging


【解决方案1】:

查看官方logging 模块,并用日志语句替换您的打印语句。

您还可以执行以下操作将打印语句重定向到文件,但这不是最佳做法。

import sys
sys.stdout = open('log.txt', 'r') 

【讨论】:

    【解决方案2】:

    更简单,但不太推荐的解决方案。复制终端中的标准输出并附加到日志文件中。如果您使用的是 bash 或 zsh:

    test.py 只打印“hello world”:

    python3 test.py > >(tee -a log.txt)
    

    标准输出将被打印到屏幕上,但也会附加(tee -a 参数)到 log.txt

    【讨论】:

      猜你喜欢
      • 2017-12-26
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-14
      • 1970-01-01
      • 2016-03-10
      相关资源
      最近更新 更多