dictconfig中的根记录器

war*_*iuc 9 python django logging sentry

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

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

root - 这将是根记录器的配置.配置的处理将与任何记录器一样,但该propagate设置将不适用.

同时在其他地方使用带有名称的记录器''来包含根记录器的配置.

这有同样的效果吗?什么是优选的?

>>> import logging
>>> logging.getLogger('') is logging.root
True
>>> 
Run Code Online (Sandbox Code Playgroud)

Vin*_*jip 11

这两种方式都可以,因为命名的记录器''是根记录器.root如果您正在配置大量记录器,则指定顶级密钥会使您更清楚地执行操作 - ''记录器配置可能会在其他组中丢失,而root密钥与密钥相邻loggers,因此(理论上)应该更突出.

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

  • @hheimbuerger它在loggers dict中没有命名为root,它与loggers dict平行.有关更多信息,请参阅https://docs.python.org/2/library/logging.config.html#dictionary-schema-details. (6认同)
  • 使用Django 1.7中的[settings.LOGGING](https://docs.djangoproject.com/en/dev/topics/logging/#configuring-logging)属性定义日志配置时,这**看起来不正确!我正在我的视图模块中记录一个命名的记录器,如果我在我的`LOGGING`中定义了一个名为`''`的记录器,则会捕获日志记录,但如果我将它命名为'root',则为*not*.不幸的是,Django文档根本没有说明如何处理根记录器. (5认同)