我的LOGGER的settings.py如下,
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'json': {
'()': 'sample_app.json_log_formatter.JSONFormatter',
},
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'stream': sys.stdout,
#'level': '',
'formatter': 'json'
},
},
'loggers': {
'': {
'handlers': ['console'],
'level': 'INFO',
#'propogate': True,
},
},
}
现在,当有任何未处理的异常,例如var = abc且未定义abc时,我会得到两次日志,
一个与我的处理程序一起使用,因此回溯错误为json格式,第二个同样为不包含json格式的错误,它来自django.request。
注意:我没有在代码中添加任何额外的记录器行。我只希望所有未处理的异常也都为json格式,但只能一次。这样当我发送给ELK时很干净
答案 0 :(得分:0)
我进行了如下设置更改
'loggers': {
'': {
'handlers': ['console'],
'level': 'DEBUG',
'propogate': True,
},
'django': {
'handlers': ['console'],
'propagate': False,
'level': 'INFO'
},
因此,在这里,我们将django的默认请求发送到INFO级别,并传播为false,因此它不会出现一次。这将覆盖根级别的日志记录配置,在上面的示例中,其他应用程序(例如我的django应用程序)的默认调试级别为django日志的INFO级别。