我正在尝试在settings.py中配置我的日志记录配置,并且有很多选项,我无法复制内置开发服务器日志(打印到控制台)。
我希望我的生产日志记录通常在开发服务器日志中打印到控制台的相同信息(GET请求,调试信息等)。我要么知道下面需要更改哪些设置,要么知道内置开发服务器日志的设置位置,以便我可以复制它。
LOGGING = {
'version': 1,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '/home/django/django_log.log',
'formatter': 'simple'
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
}
}
if DEBUG:
# make all loggers use the console.
for logger in LOGGING['loggers']:
LOGGING['loggers'][logger]['handlers'] = ['console']
如果可能的话,我也不想在除了我的settings.py之外的任何地方添加任何代码。我不想进入我的views.py并指定要打印或记录的错误,我从来没有用开发服务器这样做,所以我希望我能弄明白。< / p>
答案 0 :(得分:3)
在Django 1.8中,调试环境的default logging configuration为:
当
DEBUG
为True
时:
django
catch-all记录器将WARNING
级别或更高级别的所有消息发送到控制台。 Django目前不进行任何此类日志记录调用(所有日志记录都在DEBUG
级别,或由django.request
和django.security
记录器处理。py.warnings
记录器处理来自warnings.warn()
的消息,将消息发送到控制台。
可以在django.utils.log.DEFAULT_LOGGING
找到此日志记录配置。请注意,catch-all记录器实际上也会获取信息消息,而不仅仅是警告和上面的消息。
覆盖默认日志记录设置时,请注意disable_existing_loggers
,如果设置为True
,will shut up all of Django's default loggers。
开发服务器logs every incoming request directly to stderr是这样的:
[18/Oct/2015 12:08:17] "GET /about/ HTTP/1.1" 200 9946
这是特定于开发服务器的,除非您复制它with middleware,否则不会转移到生产环境。