如何在django代码中执行logging.DEBUG?

时间:2011-11-09 06:14:47

标签: python django debugging logging django-settings

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

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

我应该如何使用logging.DEBUG?

WAY1:

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

Way2:

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

什么是好习惯?

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

2 个答案:

答案 0 :(得分:4)

我认为过分依赖DEBUG等全局设置并不是一件好事,因为DEBUG可以改变应用程序的整体行为。

如果您想在生产中审核代码并记录内容,该怎么办?你不打算将DEBUG变为真,这样做,是吗?你宁愿调低你的日志过滤器。

从更具风格的观点来看,让2个设置(DEBUG和日志级别)影响单个行为毫无意义并且不是很麻烦。

长答案简短:我认为方法2在技术上和风格上都是优越的。

答案 1 :(得分:1)

第二种方法很好,实际上我一直都在使用它。

我在这里提出答案的唯一原因是因为我们实际上在几年前的工作项目中做了类似(1)的事情,结果发现虽然我们没有在生产中的调试级别记录任何东西到文件 创建调试消息的成本本身非常昂贵且影响性能。

即。

  • (1)在生产中,根本不会创建调试级别消息,而只是一个布尔检查。
  • (2)在生产过程中,调试消息被创建并传播,但只是没有登录到文件中(如果事实上你是如何设置日志的话)。

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