from logging.handlers import RotatingFileHandler RotatingFileHandler(filename, mode='a', maxBytes=0, backupCount=0, encoding=None, delay=False)
filename
- имя файла лога,mode='a'
- режим открытия файла,maxBytes=0
- максимальный объем файла для ротации,backupCount=0
- количество хранимых файлов,encoding=None
- кодировка файла,delay=False
- задержка открытия файла.RotatingFileHandler
.Класс logging.handlers.RotatingFileHandler()
возвращает новый экземпляр класса RotatingFileHandler
. Указанный файл filename
открывается и используется в качестве потока для ведения журнала.
mode
не указан, то используется 'a'
. encoding
не равна None
, то она используется для открытия файла. delay=True
, то открытие файла откладывается до первого вызова метода emit()
. По умолчанию файл растет бесконечно.
Можно использовать значения аргументов maxBytes
и backupCount
, чтобы позволить файлу перемещаться с заранее заданным размером. Когда размер maxBytes
будет превышен, файл закрывается, а новый файл автоматически открывается для вывода. Ротация происходит всякий раз, когда объем текущего файла журнала составляет почти максимальный размер. Но если либо значение maxBytes
, либо backupCount
равно нулю, то ротация никогда не происходит, поэтому обычно требуется установить для backupCount
значение не менее 1 и иметь ненулевой maxBytes
.
Если значение backupCount
не равно нулю, то система сохранит старые файлы журнала, добавив к расширению файла .1
, .2
и т. д. Например, с параметром backupCount=5
и именем базового файла app.log
вы получите app.log
, app.log.1
, app.log.2
, вплоть до app.log.5
. Файл, в который выполняется запись, всегда является app.log
. Когда этот файл заполнен, он закрывается и переименовывается в app.log.1
, а если существуют файлы app.log.1
, app.log.2
и т. д., то они переименовываются в app.log.2
, app.log.3
и т. д. соответственно.
RotatingFileHandler
.doRollover()
:Производит ротацию, как описано выше.
emit(record)
:Выводит record
в файл, обеспечивающий перенос, как описано выше.
Примеры использования обработчика logging.handlers.RotatingFileHandler
, умеющего делать ротацию логов, основанную на максимальном размере файла смотрите в разделе "Продвинутое использование модуля logging в Python"