Ведение журнала TimedRotatingFileHandler не работает правильно

1

TimedRotatingFileHandler в пакете протоколирования работает неправильно. Мой источник:

from logging.handlers import TimedRotatingFileHandler
import logging

logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
handler = TimedRotatingFileHandler("log/log_file.log", when="d")
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
logger.addHandler(handler)

Через несколько дней возникают две проблемы. Во-первых, он снова записывает в log_file.log. Во-вторых, журнал регистрирует события дня A в день B. Например:

File name:    
log_file.log.2018-06-21

а также

File content:

2018-06-23 08:05:42,906 - uwsgi_file__home_ddddd_main - INFO - 
2018-06-23 08:05:42,907 - uwsgi_file__home_ddddd_main - DEBUG -

В этом примере, по ошибке, события 23 июня были написаны в файле от 21 июня.

Теги:
logging

1 ответ

1

Этот обработчик всегда записывает в базовый файл (xxx.log). Когда придет время опрокидывания, файл закрывается, переименовывается и файл с базовым именем файла открывается снова.

Если вы используете несколько процессов для записи в один и тот же файл (подразумевается вашим возможным использованием UWSGI), то у вас могут возникать случайные проблемы - поддержка одного и того же файла из нескольких процессов поддерживается, но не так, как вы это сделали. См. Этот вопрос/ответ и эту запись в кулинарной книге для получения дополнительной информации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню