Я получаю логи 2 раза в stdout, когда в django возникает ошибка трассировки - PullRequest
0 голосов
/ 10 мая 2019

my settings.py для LOGGER, как показано ниже,

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 его чистый

1 Ответ

0 голосов
/ 15 мая 2019

Я получил изменения настроек, как показано ниже,

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

Итак, здесь мы делаем по умолчанию запрос django на уровень INFO и распространяем его на false, чтобы он не появлялся ни разу. И это переопределит конфигурацию ведения журнала корневого уровня, где в приведенном выше примере DEBUG используется по умолчанию для других приложений (например, мои приложения django) и уровень INFO для журналов django.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...