2012-10-10 21 views
5

Mi rotatingfilehandler está configurado en 512 bytes con tres copias de seguridad. Sin embargo, el archivo no gira y actualmente está en 3.9MB. ¿Qué estoy haciendo mal? Estoy usando Ubuntu 10.10, también tengo el mismo código en un par de imágenes de Debian que muestran el mismo problema, así que supongo que es mi código el que falla.Controlador de archivo de rotación de Python que no gira

[formatters] 
keys=simpleFormatter 

[loggers] 
keys=root,simpleExample 

[handlers] 
keys=consoleHandler,rfileHandler 

[formatter_simpleFormatter] 
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s 
datefmt= '%Y-%m-%d %H:%M:%S' 

[logger_root] 
level=INFO 
handlers=consoleHandler,rfileHandler,email 

[handler_consoleHandler] 
class=StreamHandler 
level=INFO 
formatter=simpleFormatter 
args=(sys.stdout,) 

[handler_rfileHandler] 
class=handlers.RotatingFileHandler 
backupCount=3 
maxBytes=512 
formatter=simpleFormatter 
level=INFO 
args=('/blabla/logs/blabla.log',) 

[logger_simpleExample] 
level=INFO 
handlers=consoleHandler 
qualname=simpleExample 
propagate=0 

[handler_email] 
class=handlers.SMTPHandler 
level=WARNING 
formatter=simpleFormatter 
args=('target url','sendemail',['[email protected]*****.com'],'EGIM Outstation Logger',('username','pw')) 
+0

¿Podría tratar de encontrar el código/configuración mínima que todavía causa este problema? –

+0

puede tratar de especificar 'mode = 'w'' en la sección handler_rfileHandler o pasar todos los argumentos a través de' args' en la misma sección – jfs

Respuesta

2

Tuve el mismo problema. Pruebe con:

[handler_rfileHandler] 
class=handlers.RotatingFileHandler 
formatter=simpleFormatter 
level=INFO 
args=('/blabla/logs/blabla.log', 'a', 512, 3) 
3

yo sólo tenía el mismo problema, con maxBytes y backupCount procedentes de un archivo de configuración también.

El siguiente código no funcionó:

handler = logging.handlers.RotatingFileHandler(filename = config.get("Logger", 'file'), 
               maxBytes = config.get("Logger", 'max_file_size'), 
               backupCount = config.get("Logger", 'files_to_keep')) 

Resultó que el problema era la manera de obtener los parámetros. El siguiente código que pasa valores enteros en lugar de cadenas funciona perfectamente:

handler = logging.handlers.RotatingFileHandler(filename = config.get("Logger", 'file'), 
               maxBytes = config.getint("Logger", 'max_file_size'), 
               backupCount = config.getint("Logger", 'files_to_keep')) 
+0

Totalmente a la derecha, debe usar enteros en estos parámetros. – Stan

Cuestiones relacionadas