2011-11-09 42 views
0

在django中,我们有settings.py,它定义了整个项目的DEBUG如何在django代码中执行logging.DEBUG?

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

我该如何使用logging.DEBUG?

WAY1:

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

Way2:

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

有什么好的做法?

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

+0

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

+0

对不起..纠正! –

回答

4

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

如果您想审核代码并记录生产中的东西,该怎么办?你不会把DEBUG变成真实的,你呢?你宁愿淡化你的日志过滤器。

从更具风格的角度来看,使用2个设置(DEBUG和日志级别)影响单个行为是没有意义的,也不是非常蟒蛇式的。

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

+0

感谢您的回复.. –

1

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

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

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

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

+0

感谢您分享体验! –