• Publicidad

Fichero de registro demasiado grande

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Fichero de registro demasiado grande

Notapor Moraita » 2009-03-31 04:41 @237

Hola, estoy trabajando con un proceso que no se quiere parar, debe estar siempre funcionando y por lo tanto el fichero log puede crecer indefinidamente.

Me han hablado del log4j de Java, de la funcionalidad de rollingfileappender que por lo visto cuando el fichero llega a un tamaño X, cambia de fichero log, lo cual, parece acercarse a una solución para mi.

He estado leyendo las páginas de Log::Log4perl, en concreto la funcionalidad de Log::Log4perl::Appender::File, pero no veo cómo podría yo controlar el tamaño de fichero.

En realidad me gustaría que se cambiara de fichero cada día.

Seguiré leyendo al respecto, pero si alguien ha trabajado ya con ésto, me gustaría saber que:
1) estoy bien encaminada y efectivamente tengo que usar Log4perl para hacer lo que yo quiero hacer
2) cualquier info. que me sea de utilidad para avanzar.

¡Gracias!
Moraita
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2008-10-29 10:25 @475

Publicidad

Notapor Moraita » 2009-03-31 04:49 @242

Sí, bueno.

Olvidé comentar que también he visto que con
use File::stat ... mtime, podría saber cuándo fue modificado la última vez el fichero y controlar entonces cuándo se cambia de día y tal... pero no sé si voy bien por aquí...
Moraita
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2008-10-29 10:25 @475

Notapor explorer » 2009-03-31 05:03 @252

En prácticamente todas las distribuciones Linux modernas viene instalada la facilidad logrotate, pues es claro que un sistema Linux genera registros de actividad de muy diversos temas, y siempre hay que rotarles de forma diaria, para evitar que el disco duro se llene o que los ficheros de registro alcancen tamaños excesivos.

En el Log::Log4perl::FAQ, en la sección How can my file appender deal with disappearing log files? comenta el autor cómo tratar con esos casos en los que el fichero desaparece por la acción del programa que lo rota.

En la sección How can I rotate a logfile with newsyslog? se comenta de la utilidad newsyslog, aparte de unas consideraciones importantes a la hora de asegurarnos que el fichero queda correctamente partido.

Pero... hay una forma más cómoda... no usar Log::Log::Log4perl::Appender::File sino Log::Dispatch::FileRotate:

Código: Seleccionar todo
log4perl.logger.ABC     = DEBUG, ABC

log4perl.appender.ABC                          = Log::Dispatch::FileRotate
log4perl.appender.ABC.filename                 = /tmp/abc.log
log4perl.appender.ABC.max                      = 15
log4perl.appender.ABC.DatePattern              = yyyy-MM-dd
log4perl.appender.ABC.mode                     = append
log4perl.appender.ABC.TZ                       = BST
log4perl.appender.ABC.layout                   = Log::Log4perl::Layout::PatternLayout
log4perl.appender.ABC.layout.ConversionPattern = [%d] %c - %m%n


Otro ejemplo:
Código: Seleccionar todo
log4perl.appender.Logfile = Log::Dispatch::FileRotate
log4perl.appender.Logfile.filename = findus.log
log4perl.appender.Logfile.mode = append
log4perl.appender.Logfile.max = 2
log4perl.appender.Logfile.size = 10_000_000
log4perl.appender.Logfile.layout = Log::Log4perl::Layout::PatternLayout
log4perl.appender.Logfile.layout.ConversionPattern = %d %p: %M> %m%n
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Moraita » 2009-04-02 03:57 @206

Hola explorer,

Con el módulo Log::Dispatch::FileRotate no necesitaría instalarme el Log4j, ¿no? con lo cual creo que es más simple, ¿no?
Moraita
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2008-10-29 10:25 @475

Notapor explorer » 2009-04-02 07:25 @350

Pues no lo sé, porque Log::Dispatch::FileRotate depende del sistema de registro Log::Dispatch.

Lo ideal sería usar logrotate; y siempre y cuando el programa que escribe el registro de actividad sepa que ha ocurrido un cambio en el fichero. En algunos programas vale con enviarles una señal USR1 para indicarles esa circunstancia.

De todas formas, Log4Perl es una solución de calidad profesional, y te lo digo yo que he estado en una empresa que lo usaba de forma muy seria.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Moraita » 2009-04-02 07:43 @363

Bueno, supongamos que me instalo en plan pro el Log4Perl para logear la aplicación, pero para el tema de rolling file parece que el FileRotate es lo más conveniente con lo cual, me tendría que instalar ambos ¿no?

¿O con el Log4Perl ya lo tengo todo incluido?

No sé si me explico....
Moraita
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2008-10-29 10:25 @475

Notapor explorer » 2009-04-02 08:17 @386

Sí, tienes que instalar los dos.

De todas maneras, mira un poco más en CPAN, que a lo mejor hay más módulos de rotación de registros. Busca por rotate.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados