Это - мой файл конфигурации:
[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 минут, и она на самом деле никогда не работает в полночь.
Ответ заключается в том, что процесс должен быть запущен все время, чтобы это работало должным образом.
Из http://bytes.com/topic/python/answers/595931-timedrotatingfilehandler-isnt-rotating-midnight:
Вращение должно происходить, когда процесс протоколирования создает обработчик до полуночи и делает вызов регистрации вызов, предназначенный для этого обработчика, после полуночи.
Я предполагаю, что это действительно происходит только тогда, когда процесс выполняется в полночь. В вашем случае (задание cron работает не очень долго) вы должны использовать простой файл журнала, в котором текущая дата добавляется к имени файла журнала. Таким образом, "ролловер" происходит автоматически.