Почему мой TimedRotatingFileHandler не вращается в полночь?

Это - мой файл конфигурации:

[loggers]
keys=root

[handlers]
keys=TimedRotatingFileHandler

[formatters]
keys=simpleFormatter

[logger_root]
level=DEBUG
handlers=TimedRotatingFileHandler

[handler_TimedRotatingFileHandler]
class=handlers.TimedRotatingFileHandler
level=DEBUG
formatter=simpleFormatter
args=('driver.log', 'midnight', 1, 30)

[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s
datefmt=

В моем коде я устанавливаю и использую регистратор как это:

import logging
import logging.config

logging.config.fileConfig('logging.conf')
logging.info('Some message...')

Сообщения зарегистрированы в файл, который я указываю (driver.log), но вращений в полночь никогда не происходит.

Процесс должен работать в полночь за вращением для появления? Это - пакетная обработка, которую я выполняю каждые 15 минут, и она на самом деле никогда не работает в полночь.

9
задан cope360 16 August 2010 в 19:44
поделиться

2 ответа

Ответ заключается в том, что процесс должен быть запущен все время, чтобы это работало должным образом.

Из http://bytes.com/topic/python/answers/595931-timedrotatingfilehandler-isnt-rotating-midnight:

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

18
ответ дан 4 December 2019 в 10:02
поделиться

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

2
ответ дан 4 December 2019 в 10:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: