我正试图在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']
我也不想在其他地方添加任何代码,除了我的设置。如果可能的话。我不想进入我的views.py并指定要打印或记录的错误,我从来没有在开发服务器上这样做过,所以我希望我能弄清楚这一点。
在Django 1.8中,调试环境的默认日志配置是:
当
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
,将关闭Django的所有默认日志记录程序。
开发服务器将每个传入请求直接记录到stderr,如下所示:
[18/Oct/2015 12:08:17] "GET /about/ HTTP/1.1" 200 9946
这是特定于开发服务器的,不会转移到生产环境中,除非您使用中间件进行复制。