Para loggear en Spring Boot, utilizamos Log4j2, para el que necesitamos las dependencias y el archivo log4j2.xml que aparecen a continuación en el apartado Configuración. Para utilizarlo, podemos declararnos el log de esta manera:
private static final org.apache.logging.log4j.Logger log = org.apache.logging.log4j.LogManager.getLogger();
Si se usa Lombok sólo es necesario anotar la clase con @Log4j2, no hace falta declarar la variable log. Configuración y uso de Lombok.
Configuración
Con la configuración actual de las APIs, con el parent fundewebjs-api-parent (ver Creación y estructura de proyecto SpringBoot o Migración de APIs a Parent FundeWebJS).
No es necesario realizar ninguna configuración de librerías en pom.xml.
Fichero log4j2.xml
El fichero log4j2.xml se genera automáticamente al crear el proyecto, se menciona el contenido a título informativo.
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorinterval="60" >
<Properties>
<Property name="LOG_EXCEPTION_CONVERSION_WORD">%xwEx</Property>
<Property name="LOG_LEVEL_PATTERN">%5p</Property>
<Property name="LOG_DATEFORMAT_PATTERN">dd-MM-yyyy HH:mm:ss.SSS</Property>
<Property name="CONSOLE_LOG_PATTERN">%d{${LOG_DATEFORMAT_PATTERN}} ${LOG_LEVEL_PATTERN} ${sys:PID} --- [%t] %-40.40c{1.} : %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}</Property>
</Properties>
<Appenders>
<Console name="local" target="SYSTEM_OUT" follow="true">
<PatternLayout pattern="${sys:CONSOLE_LOG_PATTERN}" />
</Console>
<Console name="json" target="SYSTEM_OUT" follow="true">
<JsonTemplateLayout eventTemplateUri="classpath:LogstashJsonEventLayoutV1.json" locationInfoEnabled="true" stackTraceEnabled="true"/>
</Console>
</Appenders>
<Loggers>
<Logger name="org.apache.catalina.startup.DigesterFactory" level="error" />
<Logger name="org.apache.catalina.util.LifecycleBase" level="error" />
<Logger name="org.apache.coyote.http11.Http11NioProtocol" level="warn" />
<logger name="org.apache.sshd.common.util.SecurityUtils" level="warn"/>
<Logger name="org.apache.tomcat.util.net.NioSelectorPool" level="warn" />
<Logger name="org.eclipse.jetty.util.component.AbstractLifeCycle" level="error" />
<Logger name="org.hibernate.validator.internal.util.Version" level="warn" />
<logger name="org.springframework.boot.actuate.endpoint.jmx" level="warn"/>
<Root level="debug">
<AppenderRef ref="local" />
</Root>
</Loggers>
</Configuration>
Este fichero sólo es valido para los despliegues locales. El appender "json" se incluye a título informativo.
La configuración por defecto para los entornos se establece en el alta de la aplicación y se encuentra en el repositorio git de despliegues de aplicaciones (Ver punto "Entornos").
Entornos
Los despliegues de las aplicaciones se gestionan mediante el repositorio HelmChart.
El fichero log4j2.xml se inicializa en la creación de la aplicación y no es necesario modificarlo.
Si aún así se quiere realizar algún ajuste en loggers o niveles de traza, hay que seguir las indicaciones para el despliegue de aplicaciones: Despliegues y configuración de los entornos.
NO CAMBIAR EL APPENDER "json".
Ante cualquier duda sobre configuración de logs o despliegues, no dude en ponerse en contacto con MNCS o Sistemas.
LAGAR
Al solicitarse el alta de la aplicación, Sistemas dará de alta el servicio para ver los logs de la aplicación en LAGAR.
Los índices a configurar en LAGAR tendrán la nomenclatura: K8S-[APLICACION]-ns-[ENTORNO].
Ver => Visualización de Logs de FundeWebJS en LAGAR.
Ante cualquier duda sobre permisos, configuración o uso de Lagar, no dude en ponerse en contacto con MNCS o Telemática.
Colorear logs en la consola local de eclipse con Spring-Boot
- Instalar el plugin "ANSI Escape in Console" desde el Marketplace de Eclipse.
Sustituir el valor de la property CONSOLE_LOG_PATTERN en el fichero log4j2.xml por:
%clr{%d{${sys:LOG_DATEFORMAT_PATTERN}}}{faint} %clr{${sys:LOG_LEVEL_PATTERN}} %clr{%pid}{magenta} %clr{---}{faint} %clr{[%15.15t]}{faint} %clr{%-40.40c{1.}}{cyan} %clr{:}{faint} %m%n${sys:LOG_EXCEPTION_CONVERSION_WORD}
Referencias
- Configuración Log4j por defecto en Spring-Boot: GitHub - Spring-Boot
- Log4j2 Appenders: ConsoleAppender.
- Log4j2 Layouts: JSONLayout
- WiKi Lagar para desarrolladores: https://wiki.um.es/wikis/lagar/doku.php?id=guia_desarrolladores
