0

我的 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 时,我会得到 2 次日志,

一个是我的处理程序,所以回溯错误是 json 格式,第二个是同样的错误,没有 json 格式,它来自 django.request。

注意:我没有在我的代码中添加任何额外的记录器行。我只希望我所有未处理的异常也是 json 格式,但只有一次。这样当我发送给 ELK 时,它是干净的

4

1 回答 1

0

我得到了如下设置更改,

'loggers': {
    '': {
        'handlers': ['console'],
        'level': 'DEBUG',
        'propogate': True,
    },
    'django': {
        'handlers': ['console'],
        'propagate': False,
        'level': 'INFO'
    },

所以在这里我们将 ll 默认的 django 请求设置为 INFO 级别并传播为 false,因此它不会出现一次。这将覆盖根级别的日志配置,在上面的示例中,DEBUG 是其他应用程序(如我的 django 应用程序)的默认设置,而 django 日志的 INFO 级别是默认设置。

于 2019-05-15T07:44:45.580 回答