我希望keep the convention of naming loggers for their module与logger = logging.getLogger(__name__)
,但有一个记录器可以捕获它们。
这可能,记录器的名称应该是什么?
(我不想switch everything to logger = logging.getLogger('django')
)
答案 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,
},
},