我可以在 settings.py
中设置't seem to figure out how to setup a 1518682 logger for my Django installation. I would like to use Django 1.3'的新 LOGGING
.
我看了Django Logging Doc's example,但它看起来像他们只设置处理程序,它将为特定的 Logger 进行记录 . 在他们的示例中,他们为名为'django','django.request'和'myproject.custom'的 Logger 设置处理程序 .
我想要做的就是设置一个默认的 logging.handlers.RotatingFileHandler
默认处理所有 Logger . 也就是说,如果我在我的项目中的某个地方创建一个新模块并且它被表示为: my_app_name.my_new_module
,我应该能够执行此操作并让所有日志记录转到旋转文件日志 .
# In file './my_app_name/my_new_module.py'
import logging
logger = logging.getLogger('my_app_name.my_new_module')
logger.debug('Hello logs!') # <-- This should get logged to my RotatingFileHandler that I setup in `settings.py`!
3 回答
弄清楚了...
您可以通过使用空字符串引用它来设置'catch all' Logger :
''
.例如,在以下设置中,我将所有日志事件保存到
logs/mylog.log
,但django.request
日志事件除外,这些事件将保存到logs/django_request.log
. 因为'propagate'
对于我的django.request
Logger 设置为False
,所以日志事件永远不会到达'catch all' Logger .正如您在your answer中所说的,Chris,定义默认 Logger 的一个选项是使用空字符串作为其键 .
但是,我认为预期的方法是在日志配置字典的
root
键下定义一个特殊的 Logger . 我在_1518705中发现了这个:这是您的答案更改为使用
root
键的配置:公平地说,我看不出两种配置之间的行为有什么不同 . 看来,使用空字符串键定义 Logger 将修改根 Logger ,因为logging.getLogger('')将返回根 Logger .
我更喜欢
'root'
而不是''
的唯一原因是它明确地修改了根 Logger . 如果您感到好奇,'root'
会覆盖''
如果您同时定义两者,只是因为根条目是最后处理的 .添加后:
我们可能会将格式更改为:
要么