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 июня.
Этот обработчик всегда записывает в базовый файл (xxx.log). Когда придет время опрокидывания, файл закрывается, переименовывается и файл с базовым именем файла открывается снова.
Если вы используете несколько процессов для записи в один и тот же файл (подразумевается вашим возможным использованием UWSGI), то у вас могут возникать случайные проблемы - поддержка одного и того же файла из нескольких процессов поддерживается, но не так, как вы это сделали. См. Этот вопрос/ответ и эту запись в кулинарной книге для получения дополнительной информации.