как создать несколько файлов журнала в папке журнала, когда он превышает максимальный размер

1

У меня есть программа, которая предоставляет информацию о регистрации в файле журнала, но теперь я создал папку с именем LogFolder Я сохраняю свой файл журнала в той же папке, но я хочу каждый раз создавать новый файл, когда он увеличивает размер maxBytes с помощью другое имя

Мой файл журнала записан в формате json, если вы знаете нормальный формат и для того же запроса, то вы можете помочь мне с этим.

Мой файл logging.json:

{
  "version": 1,
  "disable_existing_loggers": false,
  "formatters": {
        "json": {
        "format": "%(asctime)s - %(name)s - %(levelname)s - %(message)s",
            "()": "pythonjsonlogger.jsonlogger.JsonFormatter"
        }
  },
  "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "DEBUG",
            "formatter": "json",
            "stream": "ext://sys.stdout"
        },
        "file_handler": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "DEBUG",
            "formatter": "json",
            "filename": "..\\LogFloder\\Data.log",
            "mode": "a",
            "maxBytes": 25600,
            "encoding": "utf8"
         }
  },
  "root": {
       "level": "DEBUG",
       "handlers": ["console", "file_handler"]
  }
}

Вот как я называю это в моем файле python main.py:

import logging.config
import json
fp = open('logging.json')
logging.config.dictConfig(json.load(fp))
logging.getLogger("requests").setLevel(logging.WARNING)
logger = logging.getLogger(__name__)
logger.removeHandler(default_handler)
fp.close()

Здесь все работает очень хорошо. Я просто хочу создать новый файл журнала с другим именем в LogFolder когда его размер превышает максимальный размер... пожалуйста, помогите мне, как это сделать.

Заранее спасибо..

  • 0
    почему вам нужно изменить имя нового файла журнала? см. документацию для RotatingFileHandler, он уже обрабатывает имена файлов для вас, как только достигается maxBytes, если вы указываете значение для параметра backupCount.
  • 0
    Этот пост может помочь: stackoverflow.com/questions/24505145/…
Показать ещё 3 комментария
Теги:
logging

1 ответ

1

Посмотрите на RotatingFileHandler

РЕДАКТИРОВАТЬ, чтобы расширить ответ согласно рекомендации из комментария

Класс RotatingFileHandler поддерживает ротацию файлов журналов диска. При создании экземпляра вы можете указать два необязательных аргумента - maxBytes со значением по умолчанию 0 и backupCount со значением по умолчанию 0

Вы можете использовать значения maxBytes и backupCount, чтобы позволить файлу перемещаться с заранее заданным размером. Когда размер будет превышен, файл закрывается, и новый файл автоматически открывается для вывода. Ролловер происходит всякий раз, когда длина текущего файла журнала составляет почти макс. но если либо значение 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. лог.3 и т.д. соответственно.

Существует также TimeRotatingFileHandler, который позволяет вращать файлы журнала в зависимости от времени.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню