Как заставить логгер удалять существующий файл журнала перед записью в него?
У меня возникла проблема с логированием в Python. Используя приведённую ниже конфигурацию, мой лог-файл называется 'test-debug.log' и растёт бесконечно каждый раз, когда я запускаю скрипт. Я хочу, чтобы этот лог-файл содержал записи логов только с последнего запуска скрипта. Лог должен удаляться перед новым запуском.
Как это сделать?
logger = logging.getLogger('test') # Создаем лог с тем же именем, что и скрипт
logger.setLevel('DEBUG')
# Создаем обработчики и устанавливаем их уровень логирования
filehandler_dbg = logging.FileHandler(logger.name + '-debug.log')
filehandler_dbg.setLevel('DEBUG')
# Создаем настраиваемые форматы лог-записей, подходящие как для лог-файла, так и для консоли
streamformatter = logging.Formatter(fmt='%(levelname)s:\t%(threadName)s:\t%(funcName)s:\t\t%(message)s', datefmt='%H:%M:%S')
# Применяем форматы к обработчикам
filehandler_dbg.setFormatter(streamformatter)
# Добавляем обработчики к логгеру
logger.addHandler(filehandler_dbg)
Буду признателен за помощь!
1 ответ(ов)
Если вы используете внешний файл конфигурации для настроек логирования, убедитесь, что в аргументах обработчика ('handler') вы передаете 'w'
для режима записи. Это позволяет создать или перезаписать файл логов. Ваш файл конфигурации может выглядеть следующим образом:
[loggers]
keys=root
[logger_root]
level=DEBUG
handlers=file_handler
[handlers]
keys=file_handler
[handler_file_handler]
class=FileHandler
formatter=formatter
args=("../log/test" + time.strftime("%%Y%%m%%d%%H%%M%%S") + '.log', 'w')
[formatters]
keys=formatter
[formatter_formatter]
format=%(asctime)s %(levelname)-5s [%(module)s] %(message)s
Обратите внимание, что в строчке args
после имени файла указан режим 'w'
, что указывает на необходимость записи в лог-файл.
Сохранение сообщений об исключениях в Python
Как зарегистрировать ошибку в Python с отладочной информацией?
Конфигурация логгера для записи в файл и вывода на stdout
Настройка логирования в Python: вывод всех сообщений в stdout и файл журнала
Как окрасить вывод логирования Python?