Do Django采伐者有一个普遍的父母吗?
问题描述:
我想keep the convention of naming loggers for their module与logger = logging.getLogger(__name__)
,但有一个单一的记录器,捕获所有。Do Django采伐者有一个普遍的父母吗?
这是可能的,记录器的名字是什么?
(我不想switch everything to logger = logging.getLogger('django')
)
答
是啊,默认记录是根记录''
,您可以通过获得它:
注意不同类型:
>>> 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,
},
},