【问题标题】:How to do logging.DEBUG in django code?如何在 django 代码中进行 logging.DEBUG?
【发布时间】:2011-12-25 01:18:51
【问题描述】:

在 django 中,我们有 settings.py,它为整个项目定义了 DEBUG

现在, 我的调试级别是在 settings.py 中独立配置的。

我应该如何使用 logging.DEBUG ?

方式1:

if settings.DEBUG:
    logging.debug("Debug message")

方式2:

# Without checking settings.DEBUG
logging.debug("Debug message")

什么是好的做法?

我认为我们应该使用 Way2,因为日志记录级别已经决定 - 是否记录消息。 但是,有人说 Way1 是一种标准做法。

【问题讨论】:

  • 如果你使用logging模块,它应该是logging.debug()而不是全部大写。

标签: python django debugging logging django-settings


【解决方案1】:

我认为过度依赖诸如 DEBUG 之类的全局设置并不是一件好事,因为它会改变应用程序的整体行为。

如果您想在生产环境中审核代码并记录内容怎么办?您不会将 DEBUG 变为 true 来执行此操作,是吗?你宁愿调低你的日志过滤器。

从更风格的角度来看,让 2 个设置(DEBUG 和日志级别)影响一个行为是没有意义的,也不是很 Python。

简短的回答:我认为方法 2 在技术和风格上都更胜一筹。

【讨论】:

    【解决方案2】:

    第二种方法很好,其实我一直都在用。

    我在这里给出答案的唯一原因是因为我们实际上在几年前的一个工作项目中做了类似 (1) 的事情,但事实证明,尽管我们没有在生产中的调试级别记录任何内容 到一个文件创建调试消息的成本本身就非常昂贵并且影响性能。

    • (1) 在生产环境中,根本不会创建调试级别消息,而只是进行布尔检查。
    • (2) 在生产中,调试消息被创建和传播,但只是没有记录到文件中(如果这实际上是您设置日志记录的方式)。

    这个项目是一个相当大的计算农场,每一盎司的性能都很重要,从那以后我就不是这样了,你可能也不是这样,但是嘿......我只是想我会提到它.

    【讨论】:

    • 感谢分享经验!
    猜你喜欢
    • 1970-01-01
    • 2016-12-06
    • 2021-05-22
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 2013-06-08
    相关资源
    最近更新 更多