Сообщить об ошибке.

Класс RotatingFileHandler() модуля logging.handlers в Python

Ротация логов по размеру файла в модуле logging

Синтаксис:

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"