【问题标题】:override pattern ignored when setting properties logging.pattern.console or logging.pattern.level设置属性 logging.pattern.console 或 logging.pattern.level 时忽略覆盖模式
【发布时间】:2016-05-10 22:48:23
【问题描述】:

使用 spring-boot 1.3.2

我正在尝试覆盖 application.properties 文件中的 logback 模式,但无论我在其中放入什么模式,都会调用 spring-boot jar xml 中的默认模式。我可以从 INFO -> DEBUG 成功调整 logging.level 值,并且可以观察输出中的变化,但 logging.pattern.[console | level] 总是被忽略。

logging.level.org.springframework=INFO
logging.pattern.console=user:%X{username} %X{ipAddress} %5p
#logging.pattern.console=%5p    #Also ignored 
#logging.pattern.level=%5p      #Also ignored 

是的,我正在尝试使用 MDC 值,但即使我不使用 MDC 值 覆盖仍然被忽略。

关于如何进一步解决问题的任何想法?

这是我的类路径层次结构,其中包含名称中包含字符串 "log" 的任何依赖项。

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    当类路径中有一个不需要的 logback.xml 配置文件覆盖 Spring Boot 的配置时,可能会发生这种情况。您可以通过logback.statusListenerClass 系统属性强制 Logback 输出有关其配置的信息。例如,您可以在启动应用程序时将以下内容添加到 JVM 参数中:

    -Dlogback.statusListenerClass=ch.qos.logback.core.status.OnConsoleStatusListener
    

    如果使用 Spring Boot 的默认值,因此 logging.console.pattern 应该可以工作,您将看到类似于以下内容的输出:

    12:38:27,471 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
    12:38:27,489 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
    12:38:27,489 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.xml]
    12:38:27,492 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Setting up default configuration.
    

    如果在类路径的某处发现了一个流浪的logback.xml,您将看到类似于以下的输出:

    12:41:06,179 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
    12:41:06,198 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
    12:41:06,198 |-INFO in ch.qos.logback.classic.LoggerContext[default] - Found resource [logback.xml] at […]
    

    【讨论】:

    • 这究竟是怎么回事?看起来 spring-data-neo4j 在 jar 中嵌入了流氓 logback.xml。有没有办法强制使用spring-boot default logback.xml default?
    • 我尝试设置 logging.config = classpath:org/springframework/boot/logging/logback/defaults.xml 但它在启动时阻塞 java.lang.IllegalStateException: Logback configuration error detected:
    • 该文件旨在包含在您自己的logback.xml 中,而不是直接引用。
    • 我建议打开一个针对 Neo4J 的错误。 IMO,他们的 neo4j-server jar 真的不应该有logback.xml
    • 其实在spring-data-neo4j-4.0.0.RELEASE-tests.jar里面
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 2010-12-11
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多