我正在使用Django 1.6,并希望添加到 - 不替换 - Django's default logging。具体来说,除了Django的默认日志记录行为之外,我想使它成为,任何日志级别为DEBUG
或更高的日志记录都会被写入自动轮换的日志文件中。
基于我通过搜索和我自己的实验发现的内容,您似乎必须重新定义所有日志记录(Django的默认值以及我的旋转文件日志记录),即使使用'disable_existing_loggers': False
也是如此。我想我可能做错了。
我想看一下如何放入我的settings.py文件中的示例,这将允许我完成此任务。
答案 0 :(得分:1)
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']
这会将您的旋转文件处理程序添加到现有处理程序,定义基本格式化程序,并将catch-all记录程序(不执行任何操作)替换为替换默认记录程序的记录程序
答案 1 :(得分:1)
根据您的评论,我试过这个。它似乎做了你要问的事。
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'rotate': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'filename': '/tmp/debug.log',
}
},
'loggers': {
'django': {
'handlers': ['rotate'],
'propagate': True,
'level': 'DEBUG',
}
},
}
答案 2 :(得分:0)