【问题标题】:Root logger in dictconfigdictconfig 中的根记录器
【发布时间】:2013-12-14 01:40:36
【问题描述】:

我想为一个 Django 项目设置一个哨兵记录器。我将定义一个sentry 处理程序并将该处理程序放在具有error 级别的根记录器中。

根据logging模块的文档,有一个特殊的root键:

root - 这将是根记录器的配置。除了propagate 设置不适用之外,配置的处理将与任何记录器一样。

同时在other 中放置一个名为'' 的记录器,用于包含根记录器的配置。

这有同样的效果吗?什么是可取的?

>>> import logging
>>> logging.getLogger('') is logging.root
True
>>> 

【问题讨论】:

    标签: python django logging sentry


    【解决方案1】:

    任何一种方式都可以,因为名为@9​​87654323@ 的记录器是根记录器。如果您要配置大量记录器,指定顶级键 root 可以更清楚地说明您在做什么 - '' 记录器配置可能会在一组其他记录器中丢失,而 root 键是相邻的loggers 键,所以(理论上)应该更加突出。

    重申一下,名为root 的键是顶级键;它不在loggers 之下。

    【讨论】:

    • 在 Django 1.7 中使用 settings.LOGGING 属性定义日志配置时,这确实 not 似乎是正确的!我正在我的视图模块中记录到一个命名记录器,如果我在我的LOGGING 中定义了一个名为'' 的记录器,那么日志记录将被捕获,但如果我将它命名为'root'不是 .不幸的是,Django 文档根本没有说明如何处理根记录器。
    • @hheimbuerger 在 loggers 字典中没有命名为 root,它与 loggers 字典平行。请参阅docs.python.org/2/library/… 了解更多信息。
    • 'root' 不是根记录器,'' 是根记录器。
    猜你喜欢
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    相关资源
    最近更新 更多