Django Logger создает файл, но не пишет в нем

Я пытаюсь заставить Logger работать на мое приложение Django. Я вызываю регистратор с:

logger = logging.getLogger(__name__)
logger.info("some stuff")

внутри функции в моих views.py.

Но это не работает, файл, который должен содержать журнал, создан, но в нем ничего не написано, вот настройки:

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters':{
    'standard': {
        'format': '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
    },
},
'handlers': {
    'file_INFO': {
        'level': 'INFO',
        'class': 'logging.handlers.RotatingFileHandler',
        'filename': os.path.join(BASE_DIR, 'logs/site.logs'),
        'maxBytes': 1024 * 1024 * 15,  # 15MB
        'backupCount': 10,
        'formatter': 'standard',
    },
    'console_INFO': {
        'level': 'INFO',
        'class': 'logging.StreamHandler',
    }
},
'loggers': {
    'INFO': {
        'handlers': ['file_INFO', ],
        'level': 'INFO',
        'propagate': True,
    },
},

}

Любая идея?

Спасибо!

1 ответ

Вы назвали свой регистратор "INFO", но вы попросили регистратор __name__, Таким образом, используемый вами регистратор не тот, который вам нужен.

Лучше всего использовать корневой логгер, например так:

LOGGING = {
    ...
    'root': {
        'handlers': ['file_INFO', ],
        'level': 'INFO',
    },
}

Все регистраторы будут распространяться на корневой регистратор (если не указано иное), и этой настройки достаточно для более чем 90% приложений. Если вы используете корневой логгер, вам также не нужно запускать getLogger(__name__), вы можете просто войти с logging.info("some stuff"),

Другие вопросы по тегам