2013-11-28 117 views
7

我想为Django项目设置Sentry记录器。我将定义一个sentry处理程序,并将该处理程序放入根Logger中,并且级别为errordictconfig中的根记录器

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

root - 这将是根记录器的配置。配置的处理将与任何记录器相同,但propagate设置将不适用。

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

这是否有相同的效果?什么是可取的?

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

回答

6

无论哪种方式都可以工作,因为名为''的记录器是根记录器。指定root会使您在配置大量记录器时所做的更清晰 - “记录器配置可能会在其他组中丢失,而root密钥与loggers密钥相邻,因此(理论上)应该更加突出。

+1

当使用[settings.LOGGING](https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging)属性定义日志记录配置时,这看起来不正确Django 1.7!我在我的视图模块中记录了一个命名的记录器,如果我在'LOGGING'中定义了一个名为''''的记录器,而日志记录被捕获了,但是如果我将它命名为'root'',则不记录。 不幸的是,Django文档根本没有声明如何处理根日志记录器。 –

+4

@hheimbuerger它在记录器字典中没有命名为root,它与记录器字典平行。有关更多信息,请参阅https://docs.python.org/2/library/logging.config.html#dictionary-schema-details。 –

相关问题