Do Django采伐者有一个普遍的父母吗?

问题描述:

我想keep the convention of naming loggers for their modulelogger = 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, 
     }, 
    },