Rotación de Logs

28 views
Skip to first unread message

Samuel Parra Cifuentes

unread,
Mar 27, 2017, 8:47:52 PM3/27/17
to PythonChile
Amigos,

No he podido hacer funcionar las rotación de logs a media noche por medio del modulo logging.

Me pueden dar tips para esto.

gracias

Camilo Flores

unread,
Apr 2, 2017, 8:30:03 PM4/2/17
to PythonChile
Hola,

Hace un tiempo atrás tuve ese problema. El origen de esto es que, educadamente, el modulo logging por defecto abre un archivo y mantiene una referencia a él lo que significa que en sistemas UNIX seguirá escribiendo al mismo archivo aunque lo muevas. Esto causa que si un programa como logrotate rota los archivos, tu programa Python seguirá escribiendo al archivo antiguo, lo que probablemente no es lo que buscas.

La solución es que cuando uses el módulo logging, le pases explícitamente el handler WatchedFileHandler al método basicConfig, de manera que si un programa externo cambia el archivo, el módulo logging detectará el cambio e intentará seguir escribiendo a un nuevo archivo, pero con el nombre original.

Ejemplo:

import logging
logging.basicConfig(level=logging.DEBUG,
                    handlers=[logging.WatchedFileHandler(filename='mi_hermoso_log.log')])


Más info en: https://docs.python.org/3.5/library/logging.handlers.html?highlight=watchedfilehandler#watchedfilehandler

Espero te sea útil. Saludos!

Camilo
Reply all
Reply to author
Forward
0 new messages