• 13/12/2013
  • admin
  • 0

Paso 3: Personalizando los mensajes

Veremos un ejemplo más avanzado para ilustrar estos conceptos. Modifiquemos el archivo .properties para que tenga el siguiente contenido:

log4j.rootLogger=debug, stdout, R

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) – %m%n

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=example.log

log4j.appender.R.Append=false

log4j.appender.R.MaxFileSize=100KB

log4j.appender.R.MaxBackupIndex=1

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%p %t %c – %m%n

Detallaremos cada línea de esta configuración:

log4j.rootLogger=debug, stdout, R

Aquí estamos definiendo que nuestro Logger serán stdout y R. Ambos serán para atender el nivel debug.

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

En esta línea el appender stdout será de tipo ConsoleAppender. Esta clase se encargará de mostrar los mensajes a la pantalla.

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

La clase “PatternLayout” nos permite configurar nuestro appender por una cadena. En el API del framework podemos ver más detalle de estas clases.

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) – %m%n

Aquí ya estamos definiendo nuestro formato el cual consiste en mostrar en un espacio de 5 caracteres (%5) el nivel del mensaje (p). Luego sigue de un espacio. Entre llaves mostrará el hilo que generó el mensaje (%t). Luego de un espacio, entre paréntesis el nombre del archivo fuente (%F) y después de dos puntos muestra la línea dentro del código fuente (%L). Después sigue un guión y luego muestra el mensaje que se ha mandado desde el programa. Finaliza con un salto de línea.

Tenemos otro appender que es el R. Este es de clase RollingFileAppender. Esta clase permite agregar a un archivo y si este llega a un límite especificado es renombrado y el registro seguirá en un archivo nuevo. Esto es muy útil si queremos mantener todos los registros de eventos partidos en archivos de un tamaño manejable.

log4j.appender.R=org.apache.log4j.RollingFileAppender

log4j.appender.R.File=example.log

log4j.appender.R.Append=false

Aquí estamos diciendo que el archivo que creará será “example.log”y que sobreescriba los mensajes cada vez que se ejecute la aplicación.

log4j.appender.R.MaxFileSize=100KB

Que tendrá un tamaño máximo de 100KB

log4j.appender.R.MaxBackupIndex=2

Y cuantos backups deberá crear antes de que el más antiguo deba borrarse.

log4j.appender.R.layout=org.apache.log4j.PatternLayout

log4j.appender.R.layout.ConversionPattern=%p %t %c – %m%n

Aquí estamos definiendo el formato de salida que tendrá: la prioridad del evento (%p) seguido del nombre del thread que generó el evento (%t), el nombre completo de la clase incluyendo el paquete (%c) seguido de un guión y luego mensaje. Termina con una línea nueva.

Por último, agregaremos estas líneas a la configuración para enviar un email cuando suceda un error.

log4j.rootLogger=debug, stdout, R,email

….

log4j.appender.email.Threshold=error

log4j.appender.email=org.apache.log4j.net.SMTPAppender

log4j.appender.email.SMTPHost=smtp.provider.com

log4j.appender.email.From=events@jugperu.com

log4j.appender.email.To=user@jugperu.com

log4j.appender.email.Subject=Mensaje de Log4j!

log4j.appender.email.layout=org.apache.log4j.PatternLayout

log4j.appender.email.layout.ConversionPattern=%5p [%t] (%F:%L) – %m%n

Para que este funcione deberemos de agregar la biblioteca de JavaMail.

Conclusiones
Cómo hemos visto, el cambio de la manera de registrar los eventos fue solo en el archivo .properties y no en nuestro programa. Muchas aplicaciones hechas en java que utilizamos – como el Tomcat – utilizan este framework de registro de mensajes. Puedes personalizar sus mensajes de acuerdo a tus exigencias. 

www.asociacionaepi.es

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies