У меня проблемы с правильной настройкой ведения журнала gunicorn
и Django
для совместной работы. Мне удалось заставить gunicorn передавать ошибки типа 404 /favicon.ico
в мой журнал Django, однако я не могу поймать другие уровни, независимо от того, что я передаю как --log-level
для gunicorn.
Вот loggers
раздел в моем settings.py
'loggers': {
'django': {
'handlers': ['console', 'django_info_file', 'django_error_file'],
'propagate': True,
},
'gunicorn.access': {
'level': 'INFO',
'handlers': ['gunicorn_access'],
'propagate': True,
'qualname': 'gunicorn.access'
},
'gunicorn.error': {
'level': 'INFO',
'handlers': ['gunicorn_error'],
'propagate': True,
'qualname': 'gunicorn.error'
}
}
... и соответствующие обработчики
'handlers': {
'console': {
'level': 'DEBUG',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'django_info_file': {
'level': 'INFO',
'filters': ['require_debug_false'],
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'project_name/logs/django/info.log'),
'formatter': 'verbose'
},
'django_error_file': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'project_name/logs/django/error.log'),
'formatter': 'verbose'
},
'gunicorn_access': {
'level': 'INFO',
'filters': ['require_debug_false'],
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'project_name/logs/gunicorn/access.log'),
'formatter': 'verbose'
},
'gunicorn_error': {
'level': 'INFO',
'filters': ['require_debug_false'],
'class': 'logging.FileHandler',
'filename': os.path.join(BASE_DIR, 'project_name/logs/gunicorn/error.log'),
'formatter': 'verbose'
}
},
Итак, что я пробовал до сих пор:
--log-level=debug
--log-file=-
--capture-output
--enable-stdio-inheritance
--access-logfile=-
--error-logfile=-
На стороне Django, которую я пробовал:
'disable_existing_loggers': True,
(оба True
и False
) - настройка
DEBUG=True
и False
, чтобы убедиться, что require_debug_false
работает
Я понял, что могу достичь того, чего хочу, с --log-config
на стороне оружейного оружия, но мне было интересно, смогу ли я просто сделать Django обрабатывать ведение журнала на основе конфигурации LOGGER
и переопределять gunicorn.error
и gunicorn.access
, используя logging
или, в конечном итоге, glogging
.