Ведение журнала в 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.

Вернуться на верх