我似乎无法弄清楚如何为Django安装设置“默认”记录器。我想在中使用Django 1.3的新LOGGING设置settings.py。
settings.py
我看过Django Logging Doc的示例,但在我看来,他们只是设置了处理程序,该处理程序将为特定的记录程序记录日志。在他们的示例中,他们为名为“ django”,“ django.request”和“ myproject.custom”的记录器设置了处理程序。
我要做的只是设置一个默认值logging.handlers.RotatingFileHandler,它将默认处理所有记录器。即,如果我在项目中的某个地方创建了一个新模块,并用如下符号表示:my_app_name.my_new_module,我应该能够做到这一点,并将所有日志记录转到旋转文件日志中。
logging.handlers.RotatingFileHandler
# 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`!
可以通过使用空字符串引用来设置“全部捕获”记录器''。
''
举例来说,在以下设置中,我将所有日志事件保存到logs/mylog.log,除了将django.request日志事件保存到logs/django_request.log。因为'propagate'设置False为我的django.request记录器,日志事件将永远不会到达“全部捕获”记录器。
logs/mylog.log
django.request
logs/django_request.log
'propagate'
LOGGING = { 'version': 1, 'disable_existing_loggers': True, 'formatters': { 'standard': { 'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s' }, }, 'handlers': { 'default': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': 'logs/mylog.log', 'maxBytes': 1024*1024*5, # 5 MB 'backupCount': 5, 'formatter':'standard', }, 'request_handler': { 'level':'DEBUG', 'class':'logging.handlers.RotatingFileHandler', 'filename': 'logs/django_request.log', 'maxBytes': 1024*1024*5, # 5 MB 'backupCount': 5, 'formatter':'standard', }, }, 'loggers': { '': { 'handlers': ['default'], 'level': 'DEBUG', 'propagate': True }, 'django.request': { 'handlers': ['request_handler'], 'level': 'DEBUG', 'propagate': False }, } }