Mejorando el rendimiento de mis logs: Appender LogBack con Java Chronicle (de Spring Reactor)

Leyendo el anuncio de la publicación de Spring Reactor 1.1.0 (implementación de framework Reactor de Spring) he descubierto una funcionalidad muy interesante de cara a mejorar el rendimiento de mi aplicación disminuyendo el tiempo dedicado a los logs.

Spring Reactor incluye un Appender LogBack basado en Java Chronicle, que es una librería de mensajería de alto rendimiento que usa ficheros memory-mapped para una persistencia rápida y eficiente.

Este Appender logea eventos a Java-Chronicle en formato raw (aún sin procesar), lo que implica un proceso posterior para poder procesar logs.

Aunque parezca extraño este comportamiento puede ser muy útil en entornos productivos donde realmente el log de las aplicaciones no nos importa si esta funcionado bien, y sólo lo necesitamos si algo va mal. Para estas ocasiones con una utilidad se pueden extraer los datos de Chronible en un fichero de log estándar.

La forma de configurarlo es esta:

En nuestro fichero Logback (logback.xml):

<appender name="chronicle" class="reactor.logback.DurableAsyncAppender">

<!– Uncomment to have log events also sent to a "normal" file appender –>

<!–appender-ref ref="logfile"/–>

<basePath>log/</basePath>

<backlog>2097152</backlog>

</appender>

Si algo va mal utilizaré la utilidad DurableLogUtility de reactor-logback.jar para escribir hacia un fichero de log, en el ejemplo se extraen todas las trazas ERROR almacenadas en el directorio log/ hacia el appender logfile del fichero de configuración logback.xml

java reactor.logback.DurableLogUtility –path log/ –config logback.xml –output logfile –level ERROR

Me lo apunto para ponerlo en práctica en breve! 🙂

Deja un comentario