如何添加到Django的默认日志记录?

Nic*_*ick 5 django logging

我正在使用Django 1.6,并希望添加 - 而不是替换 - Django的默认日志记录.具体来说,我想这样做,除了Django的默认日志记录行为之外,任何日志级别DEBUG或更高级别的日志记录都会写入自动轮换的日志文件中.

基于我通过搜索和我自己的实验发现的内容,您似乎必须重新定义所有日志记录(Django的默认值以及我的旋转文件日志记录),即使在使用时也是如此'disable_existing_loggers': False.我想我可能做错了什么.

我想看看我的settings.py文件中放入什么的示例,这将允许我完成此操作.

dwu*_*urf 2

settings.py只是Python,所以我们可以这样做:

from django.utils.log import DEFAULT_LOGGING

# Use defaults as the basis for our logging setup
LOGGING = DEFAULT_LOGGING

# We need some formatters. These ones are from the docs.
LOGGING['formatters'] = {
    'verbose': {
        'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
    },
    'simple': {
        'format': '%(levelname)s %(message)s'
    },
}

# A log file handler that rotates periodically
LOGGING['handlers'].update({
    'rotate': {
        'level': 'DEBUG',
        'class': 'logging.handlers.RotatingFileHandler',
        'formatter': 'verbose',
        'filename': '/tmp/debug.log',
    }
})

# The default 'django' logger is a catch-all that does nothing. We replace it with
# a rotating file handler.
LOGGING['loggers'].update({
    'django': {
        'handlers': ['rotate'],
        'propagate': True,
        'level': 'DEBUG',
    }
})

# If you don't want to completely replace the django handler, you could do something
# like this instead:
#LOGGING['loggers']['django']['handlers'] += ['rotate']
Run Code Online (Sandbox Code Playgroud)

这会将您的旋转文件处理程序添加到现有处理程序中,定义基本格式化程序,并将捕获所有记录器(不执行任何操作)替换为替换默认记录器的记录器