Django记录器有普遍的父母吗?

时间:2017-10-14 17:10:47

标签: django python-3.x logging

我希望keep the convention of naming loggers for their modulelogger = logging.getLogger(__name__),但有一个记录器可以捕获它们。

这可能,记录器的名称应该是什么?

(我不想switch everything to logger = logging.getLogger('django')

1 个答案:

答案 0 :(得分:2)

是的,默认记录器是根记录器'',您可以通过以下方式获取:

注意不同的类型:

>>> logging.getLogger('')
<logging.RootLogger object at 0x7f0b9521ec18>
在Django中,您可以轻松地将处理程序添加到根记录器:

LOGGING = {
    ...
    'loggers': {
        '': {
            'level': 'DEBUG',
            'handlers': ['system_log', 'debug_log', 'sentry'],
        },
    },
}

如果您将处理程序附加到根记录程序,它将看到所有日志。这并不总是需要的。因此,如果您将一些处理程序附加到更专业的记录器,则可以将另一个处理程序设置为propagate=False,以便消息不会到达根记录器。

    'loggers': {
        '': {
            'level': 'DEBUG',
            'handlers': ['system_log', 'debug_log', 'sentry'],
        },
        'django': {
            'level': 'INFO',
            'handlers': ['another_handler_just_for_django'],
            'propagate': False,
        },
   },