Log4J con MySQL – Log de aplicaciones en Base de Datos | Carlos Cordero – Blog

Probablemente cualquier persona que habitualmente programe en Java conocerá el sistema Log4J, el sistema de log de eventos más utilizado en esta tecnología. Aunque este post no pretende ser ninguna introducción dado que estas ya existen, si quiero destacar el alto nivel de flexibilidad que ofrece el sistema, en especial en los ámbitos de “salida” (appender) de la información y en el “formato” (pattern) que se le da a la misma.

Personalmente me he encontrado en muchas ocasiones ante ficheros de log que eran muy difíciles de seguir… bueno, creo que ningún fichero con mucho contenido es fácil de “parsear” manualmente. De esta problemática llega el motivo del post, la necesidad de organizar la salida de forma que pueda ser fácilmente ordenada y fácilmente consultada a posteriori: esto es, una base de datos.

Log4J, gracias a su flexibilidad, permite incorporar una salida directa a una base de datos… por lo que matamos dos pájaros de un tiro: en una aplicación que ya utiliza Log4J, no tendremos que realizar ninguna modificación en el código, tán solo las siguientes líneas de código en el fichero de configuración (por ejemplo, log4j.properties).

log4j.rootCategory=INFO, FILE, BD

log4j.appender.BD=org.apache.log4j.jdbc.JDBCAppender

log4j.appender.BD.URL=jdbc:mysql://localhost/base_de_datos

log4j.appender.BD.user=root

log4j.appender.BD.password=root

log4j.appender.BD.sql=INSERT INTO nombre_table (Fecha, Clase, Nivel, Mensaje) VALUES (‘%d’, ‘%c’, ‘%p’, ‘%m’)

En este caso, estamos indicando que filtraremos a partir del nivel INFO (es decir, no se guardarán los TRACE ni DEBUG) y lo haremos en un appender FILE y en el apprender BD cuya configuración es muy sencilla, la misma que para cualquier conexión a una base de datos MySQL. Por supuesto podremos utilizar cualquier BD con soporte JDBC. La query SQL también puede ser modificada, en esta incluyo los parámetros habituales en columnas separadas.

En la documentación de Log4J se incluyen todos los parámetros que pueden ser incluídos.

Dedicaré un futuro post a hablar de como extender Log4J para incluir otras opciones además del propio mensaje, en mi caso en particular, poder grabajar en una columna separada el ID del elemento que daba el “warning”.

Fuente vía Log4J con MySQL – Log de aplicaciones en Base de Datos | Carlos Cordero – Blog.




    Responder

    Introduce tus datos o haz clic en un icono para iniciar sesión:

    Logo de WordPress.com

    Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

    Imagen de Twitter

    Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

    Foto de Facebook

    Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

    Google+ photo

    Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

    Conectando a %s



A %d blogueros les gusta esto: