2013-06-17 3 views
0

Я пытаюсь создать файл конфигурации журнала, который будет создавать один полный журнал в день, но на данный момент он создает несколько файлов;Файл конфигурации протокола python, один в день, а не несколько

ie. 
readings.log.2013-06-17_01 
readings.log.2013-06-17_02 
readings.log.2013-06-17_03 
readings.log.2013-06-17_04 
readings.log.2013-06-17_05 
readings.log.2013-06-17_06 
readings.log.2013-06-18_01 
readings.log.2013-06-18_02 
readings.log.2013-06-18_03 
readings.log.2013-06-18_04 
readings.log.2013-06-18_05 
readings.log.2013-06-18_06 
...etc 

Я уверен, что я что-то пропустил, но то, что мне нужно изменить в своем конфигурационном файле регистрации, чтобы сделать это создать только один полный логфайл в день, независимо от размера!>?

Использование Python 2.7 атм и скрипт работает 24/7

Thx Мэтт.

Мой конфигурационный файл регистрации; (Logging_v3.cfg)

[loggers] 
keys=root 

[logger_root] 
handlers=screen,file 
level=NOTSET 

[formatters] 
keys=simple,complex,logtemps 

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

[formatter_complex] 
format=%(asctime)s - %(name)s - %(levelname)s - %(module)s : %(lineno)d - %(message)s 

[formatter_logtemps] 
format=%(asctime)s %(name)s %(levelname)s %(message)s 

[handlers] 
keys=file,screen 

[handler_file] 
class=handlers.TimedRotatingFileHandler 
interval=midnight 
backupCount=0 
formatter=logtemps 
level=INFO 
args=('logs/readings.log',) 

[handler_screen] 
class=StreamHandler 
formatter=simple 
level=DEBUG 
args=(sys.stdout,) 

И код у меня есть в моей программе, чтобы сделать указанную работу; (Очевидно, есть намного больше, но это основная часть для лесозаготовок)

import logging 
import logging.config 

logging.config.fileConfig('config/logging_v3.cfg') #logfile config 

logging.debug("DEBUG MODE") 
logging.debug("INFO MODE") 
+1

Я не уверен на 100%, но я хотел бы попробовать изменить 'арг = ('журналы/readings.log',)' в 'арг = ('logs/readingings.log', 'midnight',) '- похоже, что он пройдет параметр интервала, как ожидалось; Я не уверен, какие ключи вы можете использовать в конфигурационных файлах протоколирования, и, насколько я понимаю, это, похоже, не задокументировано? – ernie

+0

Я думаю, что это в основном ответило здесь: http://stackoverflow.com/questions/8467978/python-want-logging-with-log-rotation-and-compression – 9000

+0

@ernie, даст ему преимущество. –

ответ

1

Кодификация комментариев в ответ:

документации для logging Configuration file format кажется немного неясно, каковы действительные варианты для ключей и значений в каждом разделе.

Для обработчиков, как представляется, передаются аргументы конструкторам, нам нужно использовать ключ args и указать здесь значения, а не использовать пары ключ-значение в разделе конфигурации, например. вместо:

[handler_file] 
class=handlers.TimedRotatingFileHandler 
interval=midnight 
args=('logs/readings.log',) 

Мы должны использовать:

[handler_file] 
class=handlers.TimedRotatingFileHandler 
args=('logs/readings.log', 'midnight',)