Ведение журнала в Python Django: INFO не регистрируется в файле
Я установил логгер в моем Django проекте для 4 различных случаев: информационные сообщения, отладочные сообщения, сообщения об ошибках, ad gunicorn logging.
Вот содержание моего settings.py
:
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"main_formatter": {
"format": "{asctime}-{levelname}-{module}-{funcName}-{message}",
"style": "{",
},
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"formatter": "main_formatter",
},
"dfile": {
"class": "logging.FileHandler",
"filename": "logs/debug.log",
"formatter": "main_formatter",
},
"file": {
"class": "logging.FileHandler",
"filename": "logs/info.log",
"formatter": "main_formatter",
},
"efile": {
"class": "logging.FileHandler",
"filename": "logs/error.log",
"formatter": "main_formatter",
},
"gfile": {
"class": "logging.FileHandler",
"filename": "logs/gunicorn.log",
"formatter": "main_formatter",
},
},
"loggers": {
"main": {
"handlers": ["dfile", "console"],
"propagate": True,
"level": "DEBUG",
},
"main": {
"handlers": ["file", "console"],
"propagate": True,
"level": "INFO",
},
"main": {
"handlers": ["efile", "console"],
"propagate": True,
"level": "ERROR",
},
"gunicorn.access": {
"handlers": ["gfile", "console"],
"propagate": False,
"level": "DEBUG",
},
},
}
А вот пример:
import logging
[...]
logger = logging.getLogger(__name__)
[...]
logger.error(f"{request.user}: Erreur interne. Code [LI.001]") # THIS WORKS
logger.info(f"Password Generated and Sent to {email}") # THIS DOESNT WORK
В моей папке logs/ у меня есть 4 файла: info.log
, error.log
, debug.log
и gunicorn.log
Вывод я вижу только в error.log
и gunicorn.log
, остальные 2 файла всегда пусты.
Я ничего не знаю о логировании в Django. Но мне бросилось в глаза, что в вашем словаре loggers
ключ main
указывается 3 раза. Я бы ожидал, что каждый из них перезаписывает предыдущий, и поэтому ваши настройки DEBUG и INFO теряются/заменяются настройками ERROR.