Python TimedRotatingFileHandler — PID в имени файла журнала — лучший подход

Я хочу запустить несколько экземпляров (процессов) программы Python, и я хочу, чтобы каждый из них писал в свой собственный файл журнала.

Процессы будут перезапускаться не реже одного раза в день.

Итак, я пришел к следующему коду.

logHandler = TimedRotatingFileHandler(os.path.join(os.path.dirname(sys.argv[0]),'logs/LogFile_'+str(os.getpid())+'.log'),when="midnight", backupCount=7)
  1. Будет ли этот код поддерживать 7 резервных копий для каждого PID?
  2. Есть ли лучший способ разделить это, чтобы мой диск не заполнялся бесполезными файлами? Учтите, что PID может быть уникальным для процессов в течение нескольких месяцев.
  3. Есть ли лучший подход к этому?

В идеале я хотел бы иметь журналы, относящиеся только к 1 неделе. Можно ли это сделать с помощью TimeRotatingFileHander без написания отдельного сценария Purge/Delete?


person Guddu    schedule 26.10.2013    source источник
comment
Привет! действительно ли мой ответ касался вашего вопроса? Дайте мне знать, если я пропустил отметку - непринятие похоже на свободную нить :)   -  person jtmoulia    schedule 30.10.2013


Ответы (1)


  1. Да, это будет поддерживать 7 резервных копий или журналов за неделю для каждого уникального пути к журналу.
  2. Обработчики ротационных файлов — это правильный способ ограничить журналы.
  3. Как я уже сказал, ротация файловых обработчиков — правильный подход. Я предполагаю, что вы могли бы использовать RotatingFileHandler, но он вращается, когда журнал достигает размера, а не в определенное время, поэтому он не позволяет вам указывать журналы за неделю.

Меня немного смущает то, как вы сохраняете pid для данного процесса постоянным, давая понять, что «процессы будут перезапускаться не реже одного раза в день». Более надежная гарантия того, что каждый процесс имеет уникальный путь к журналу, заключается в том, чтобы указать его явно в качестве аргумента, например. python script --log-file="$(pwd)/logs/LogFileProcX.log"

person jtmoulia    schedule 26.10.2013