2011-12-08 7 views
6

Sto provando a testare utilizzando un TimedRotatingFileHandler con un file logging.config, niente di così complicato ma dovrebbe passare ogni 10 secondi in un nuovo file di registro.Utilizzo della registrazione TimedRotatingFileHandler con un file logging.config

Comunque sto ottenendo il seguente

Traceback (most recent call last): 
    File "testLogging.py", line 6, in <module> 
    logging.config.fileConfig(logDir+'logging.conf') 
    File "C:\Python26\Lib\logging\config.py", line 84, in fileConfig 
    handlers = _install_handlers(cp, formatters) 
    File "C:\Python26\Lib\logging\config.py", line 159, in _install_handlers 
    h = klass(*args) 
    File "C:\Python26\Lib\logging\handlers.py", line 195, in __init__ 
    raise ValueError("You must specify a day for weekly rollover from 0 to 6 (0 
is Monday): %s" % self.when) 
ValueError: You must specify a day for weekly rollover from 0 to 6 (0 is Monday) 
: WHEN='S' 

Il pitone è piuttosto semplice imposta solo su un ciclo infinito che registra continuamente

import logging 
import logging.config 

logDir = "./logs/" 

logging.config.fileConfig(logDir+'logging.conf') 
logger = logging.getLogger('root') 

while 1==1:   
    logger.info('THIS IS AN INFO MESSAGE') 

E il file di configurazione

[loggers] 
keys=root 

[logger_root] 
level=INFO 
handlers=timedRotatingFileHandler 

[formatters] 
keys=timedRotatingFormatter 

[formatter_timedRotatingFormatter] 
format=%(asctime)s %(name)-12s %(levelname)-8s %(message)s 
datefmt=%m-%d %H:%M 

[handlers] 
keys=timedRotatingFileHandler 

[handler_timedRotatingFileHandler] 
class=handlers.TimedRotatingFileHandler 
level=INFO 
formatter=timedRotatingFormatter 
args=('./logs/log.out', 'when=\'S\'', 'interval=10', 'backupCount=5') 

Come si può vedere quando è impostato su "S" e non su "W" come il messaggio di errore sembra indicare.

Edit: Come per la risposta qui sotto la sintassi corretta nella configurazione di registrazione era

args=('./logs/log.out', 'S', 10, 5, None, False, False) 

risposta

11
args=('./logs/log.out', 'when=\'S\'', 'interval=10', 'backupCount=5') 

Non sembra giusto. Prova questo

args=('./logs/log.out', when='S', interval=10, backupCount=5) 

O forse questo

args=('./logs/log.out','S',10,5) 
+2

L'ultima forma, credo, dovrebbe funzionare. Ricorda - qualunque cosa sia in arg verrà effettivamente passata a 'eval()'. Non sono sicuro che il tuo primo suggerimento funzionerà - mi aspetterei che generasse un 'SyntaxError'. –

+0

Grazie a entrambi, ho letteralmente lavorato a me stesso, è stato l'ultimo modulo che funziona correttamente – PDStat

Problemi correlati