tutorial starter logger log how spring logback spring-boot

starter - spring boot logback file



-Dlogback.configurationFile=logback.xml ignorado al ejecutar Spring-Boot (4)

Tenemos una aplicación spring-boot 1.0.RC1, con logback configurado para el registro y un archivo logback.xml en src / test / resources. Cuando ejecutamos spring-boot desde maven, el archivo de logback parece ser visto y respetado. (Ese es nuestro formato de registro requerido después del logotipo de Spring-boot)

D:/Users/myName/My Projects/Work/my-co/my-app/src/my-app/my-app-camel>mvn clean spring-boot:run -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile=src/test/resources/logback.xml <snip/> [INFO] --- spring-boot-maven-plugin:0.5.0.M7:run (default-cli) @ my-app-camel --- 06:41:56,011 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [src/test/resources/logback.xml] at [file:/D:/Users/myName/My%20Projects/Work/my-co/my-app/src/my-app/my-app-camel/src/test/resources/logback.xml] 06:41:56,150 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 06:41:56,170 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 5 seconds 06:41:56,171 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:/Users/myName/My Projects/Work/my-co/my-app/src/my-app/my-app-camel/src/test/resources/logback.xml]] every 5 seconds. 06:41:56,172 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter 06:41:56,223 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 06:41:56,233 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 06:41:56,276 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 06:41:56,389 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [me.moocar.logbackgelf.GelfAppender] 06:41:56,398 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [GELF] 06:41:56,567 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.my-co.my-app.] to DEBUG 06:41:56,568 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [com.my-co.my-app.] to false 06:41:56,569 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[com.my-co.my-app.] 06:41:56,571 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.] to DEBUG 06:41:56,572 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [org.] to false 06:41:56,572 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[org.] 06:41:56,573 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to INFO 06:41:56,574 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 06:41:56,574 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 06:41:56,578 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@4ffdcca5 - Registering current configuration as safe fallback point . ____ _ __ _ _ /// / ___''_ __ _ _(_)_ __ __ _ / / / / ( ( )/___ | ''_ | ''_| | ''_ // _` | / / / / /// ___)| |_)| | | | | || (_| | ) ) ) ) '' |____| .__|_| |_|_| |_/__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.0.0.RC1) 06:41:57.436 [com.my-co.my-app.Application.main()] INFO com.my-co.my-app.Application - Starting Application on MY-LAPTOP-HOSTNAME with PID 7812 (started by myName) 06:41:57.952 [com.my-co.my-app.Application.main()] INFO o.s.b.f.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [META-INF/spring/camel-server.xml] <etc./>

Sin embargo, cuando eliminamos un archivo roguelogback.xml que se coló en src / java / resources y lo volvimos a ejecutar sin cambiar nada (asegurándonos de que también lo logramos para eliminar el que está en el destino):

D:/Users/myName/My Projects/Work/my-co/my-app/src/my-app/my-app-camel>mvn clean spring-boot:run -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener -Dlogback.configurationFile=src/test/resources/logback.xml <snip/> [INFO] [INFO] <<< spring-boot-maven-plugin:1.0.0.RC1:run (default-cli) @ my-app-camel <<< [INFO] [INFO] --- spring-boot-maven-plugin:1.0.0.RC1:run (default-cli) @ my-app-camel --- 06:53:59,598 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [src/test/resources/logback.xml] at [file:/D:/Users/myName/My%20Projects/Work/my-co/my-app/src/my-app/my-app-camel/src/test/resources/logback.xml] 06:53:59,736 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - debug attribute not set 06:53:59,755 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Setting ReconfigureOnChangeFilter scanning period to 5 seconds 06:53:59,756 |-INFO in ReconfigureOnChangeFilter{invocationCounter=0} - Will scan for changes in [[D:/Users/myName/My Projects/Work/my-co/my-app/src/my-app/my-app-camel/src/test/resources/logback.xml]] every 5 seconds. 06:53:59,757 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - Adding ReconfigureOnChangeFilter as a turbo filter 06:53:59,806 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [ch.qos.logback.core.ConsoleAppender] 06:53:59,817 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [STDOUT] 06:53:59,858 |-INFO in ch.qos.logback.core.joran.action.NestedComplexPropertyIA - Assuming default type [ch.qos.logback.classic.encoder.PatternLayoutEncoder] for [encoder] property 06:53:59,971 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - About to instantiate appender of type [me.moocar.logbackgelf.GelfAppender] 06:53:59,980 |-INFO in ch.qos.logback.core.joran.action.AppenderAction - Naming appender as [GELF] 06:54:00,144 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [com.my-co.my-app.] to DEBUG 06:54:00,144 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [com.my-co.my-app.] to false 06:54:00,145 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[com.my-co.my-app.] 06:54:00,148 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting level of logger [org.] to DEBUG 06:54:00,148 |-INFO in ch.qos.logback.classic.joran.action.LoggerAction - Setting additivity of logger [org.] to false 06:54:00,149 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[org.] 06:54:00,150 |-INFO in ch.qos.logback.classic.joran.action.RootLoggerAction - Setting level of ROOT logger to DEBUG 06:54:00,150 |-INFO in ch.qos.logback.core.joran.action.AppenderRefAction - Attaching appender named [STDOUT] to Logger[ROOT] 06:54:00,151 |-INFO in ch.qos.logback.classic.joran.action.ConfigurationAction - End of configuration. 06:54:00,154 |-INFO in ch.qos.logback.classic.joran.JoranConfigurator@54c1f582 - Registering current configuration as safe fallback point . ____ _ __ _ _ /// / ___''_ __ _ _(_)_ __ __ _ / / / / ( ( )/___ | ''_ | ''_| | ''_ // _` | / / / / /// ___)| |_)| | | | | || (_| | ) ) ) ) '' |____| .__|_| |_|_| |_/__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.0.0.RC1) 2014-02-12 06:54:01.023 INFO 5240 --- [lication.main()] com.my-co.my-app.Application : Starting Application on MY-LAPTOP-HOSTNAME with PID 5240 (started by myName) 2014-02-12 06:54:01.564 INFO 5240 --- [lication.main()] o.s.b.f.xml.XmlBeanDefinitionReader : Loading XML bean definitions from class path resource [META-INF/spring/camel-server.xml] <etc./>

Notará que el formato de registro después del arranque de la primavera es diferente al primer resultado. Sin embargo, logback (antes del inicio de Spring-Boot) informa que ha visto el archivo logback.xml en src / test / resources, tal como lo hizo la primera vez.

Para mayor interés, nuestro logback.xml (que estaba en src / java / resources y src / test / resources es el siguiente:

<?xml version="1.0" encoding="UTF-8"?> <configuration scan="true" scanPeriod="5 seconds"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{40} - %msg%n</pattern> </encoder> </appender> <appender name="GELF" class="me.moocar.logbackgelf.GelfAppender"> <facility>logback-gelf-test</facility> <graylog2ServerHost>XXX.XXX.XXX.XXX</graylog2ServerHost> <graylog2ServerPort>NNNNN</graylog2ServerPort> <useLoggerName>true</useLoggerName> <useThreadName>true</useThreadName> <useMarker>true</useMarker> <graylog2ServerVersion>0.9.6</graylog2ServerVersion> <chunkThreshold>1000</chunkThreshold> <messagePattern>%m%rEx</messagePattern> <shortMessagePattern>%.-100(%m%rEx)</shortMessagePattern> <additionalField>ipAddress:_ip_address</additionalField> <additionalField>requestId:_request_id</additionalField> <staticAdditionalField>_node_name:www013</staticAdditionalField> <includeFullMDC>true</includeFullMDC> </appender> <logger name="com.my-co.my-app." level="DEBUG" additivity="false"> <appender-ref ref="STDOUT" /> </logger> <logger name="org." level="DEBUG" additivity="false"> <appender-ref ref="STDOUT" /> </logger> <root level="INFO"> <appender-ref ref="STDOUT" /> <!--<appender-ref ref="GELF" />--> </root> </configuration>

Así que, en resumen, parece (aunque podría estar equivocado) que cuando se incluye un logback.xml con mi aplicación Spring-boot, se ve y se usa (es decir, en src / java / resources), pero cuando no lo hacemos, luego, a pesar de los mejores esfuerzos de logback, se ignora.

En cuanto a arreglar esto, estamos perplejos. Estamos adivinando que hay algo en algún lugar de nuestro contenedor de arranque de primavera que de alguna manera tiene prioridad, o que está desactivando el inicio de sesión, o entrando y diciendo logback para ignorar lo que acaba de decir y usar otro valor predeterminado.

Alternativamente, estamos siendo tontos, pero no podemos verlo. Toda la ayuda fue recibida con gratitud.


De acuerdo con la documentación de Spring Boot , podría ejecutar esto:

java -jar app.jar --logging.config=./src/test/resources/logback.xml

Además, Spring Boot intenta unificar el nombre de las propiedades de las diferentes startegies de registro. Como resultado, el parámetro JVM Dlogback.configurationFile no se usa para Spring Boot .


La estrategia predeterminada asume que si no tiene un logback.xml (o uno de los otros nombres de archivo estándar) en el classpath, entonces debe estar satisfecho con los valores predeterminados (vea LogbackLoggingSystem para más detalles). Spring Boot intenta unificar los conmutadores de configuración externos para los sistemas de registro comunes, por lo que se ve en logging.config (no sabía acerca de logback.configurationFile ). Puede usar eso en su lugar (es decir, logging.config=file:./src/test/resources/logback.xml ), o asegúrese de que su archivo de configuración esté en classpath.


No del todo bien. logback.configurationFile no es administrado por Spring (es decir, env var replacement o similar), pero logback aún lo recogerá. Al menos esa es mi comprensión de los documentos y mi experiencia práctica.


Sé que esta publicación es un poco antigua, pero agregar lo siguiente a application.properties es una solución rápida basada en la respuesta de Dave Syer:

logging.config=${logback.configurationFile}