Как ограничить размер файла журнала ведения журнала Python?

#python #logging

#python #ведение журнала

Вопрос:

Рассмотрим следующий пример кода:

 import logging
import time
from logging.handlers import RotatingFileHandler
#----------------------------------------------------------------------
def create_rotating_log(path):
    """
    Creates a rotating log
    """    
    logger = logging.getLogger("Rotating Log")
    logger.setLevel(logging.INFO)

    # add a rotating handler
    handler = RotatingFileHandler(path, maxBytes=20,
                                      backupCount=1)
    logger.addHandler(handler)

    for i in range(20):
        logger.info("This is test log line %s" % i)
        time.sleep(1.5)
    
#----------------------------------------------------------------------
if __name__ == "__main__":
    log_file = "test.log"
    create_rotating_log(log_file)
  

После завершения работы скрипта backupCount=1 он создает два файла test.log , test.log.1 в которых первый файл содержит:

This is test log line 19

а второй продолжает:

This is test log line 18

Мне не нужны файлы резервных копий, и я также хочу ограничить размер моего файла журнала. Итак, когда я устанавливаю backupCount=0 , регистратор просто добавляет каждую строку в файл журнала, как будто размер файла журнала не ограничен. Это содержимое test.log с backupCount=0 :

 This is test log line 0
This is test log line 1
This is test log line 2
This is test log line 3
This is test log line 4
This is test log line 5
This is test log line 6
This is test log line 7
This is test log line 8
This is test log line 9
This is test log line 10
This is test log line 11
This is test log line 12
This is test log line 13
This is test log line 14
This is test log line 15
This is test log line 16
This is test log line 17
This is test log line 18
This is test log line 19

  

Комментарии:

1. Почему вы хотите ограничить размер вашего файла журнала? Из документов похоже, что вы можете использовать вращающийся обработчик файлов либо с 1 неограниченным файлом журнала, либо с несколькими ограниченными файлами журнала. Итак, какого поведения вы хотите добиться?

2. @steviestickman возможно ли получить 1 ограниченный файл журнала?

3. возможно, но вращающийся обработчик файлов — это не тот обработчик, который вы можете использовать для этой цели. Вот почему я спрашиваю, почему вы хотите ограничить себя 1 файлом и какое поведение вы ожидаете от такого обработчика.

4. @steviestickman Причина в том, что один из наших API генерирует журналы по 100 гигабайт в день.