Nosotros usamos
Log::Log4perl, pues nos parece que da la solución más profesional junto con un uso muy sencillo en los casos simples.
Ejemplo:
Using perl Syntax Highlighting
use Log
::Log4perl ':easy'; # Usamos las variables y funcionamiento 'fácil'
# Inicializamos el log
Log
::Log4perl->easy_init($DEBUG); # DEBUG, INFO, WARN, ERROR o FATAL : Nivel de detalle
# Empieza el programa
INFO
"Comienzo del programa tal";
# ...
# Procesamiento
foreach my $var ( @todos ) {
DEBUG
"Procesando nodo $var";
# ...
if ( $desastre ) {
LOGDIE
"ERROR: Ejecución cancelada por error muy grave. Fin de programa";
}
if ( $error ) {
WARN
"ERROR en el procesamiento de $var. Se sigue con el siguiente";
next;
}
# ...
}
INFO
"Fin del programa tal";
Coloreado en 0.002 segundos, usando
GeSHi 1.0.8.4
La salida es algo parecido a esto:
- Código: Seleccionar todo
2007/07/11 11:04:21 Comienzo del programa tal
2007/07/11 11:04:22 Iniciar conexión con Excel
2007/07/11 11:04:25 Ok
2007/07/11 11:04:25 Cargando plantilla Excel
2007/07/11 11:04:27 Ok
2007/07/11 11:09:23 Procesando nodo A
2007/07/11 11:35:26 Ok
2007/07/11 11:35:27 Cierra Excel
2007/07/11 11:35:33 Cerrando bases de datos
2007/07/11 11:35:38 Fin del programa tal
Eso es la salida en pantalla, pero es fácil desviar esa salida a un fichero (indicándoselo a Log::Log4perl). Los mensajes que aparecen son todos los asociados al nivel DEBUG (todas las líneas con DEBUG) y superiores. Si, después de la fase de corrección de errores, ya no quiero ver más esos mensajes de depuración, en la línea que inicializo Log::Log4perl lo cambio de $DEBUG a $INFO y de esa manera sólo saldrán los mensajes de nivel INFO o superior.
Incluso tiene funciones, como la LOGDIE que realizan una salida de un mensaje al log y luego terminan el programa (hacen un
die, pero más amigable).
Esta configuración se puede realizar de forma externa con un fichero, con lo que podemos indicar, a todos (o parte) de los programas de nuestro proyecto el nivel de detalle, cómo es ese detalle (formato) y hacia dónde (pantalla, fichero, SMS, web, televisión, etc.)
Es muy cómodo, tanto si tienes un script pequeño como un programa muy grande. Total, son 2 líneas para empezar a trabajar y el resto son todas las líneas DEBUG, INFO, etc que quieras poner en tu programa.