【问题标题】:How to disable auto-configuration of logging in Spring Boot?如何在 Spring Boot 中禁用日志记录的自动配置?
【发布时间】:2016-08-30 23:45:03
【问题描述】:

Spring Boot 有一个特性,它可以自动检测任何可用的日志框架(基于 org.springframework.boot.logging.LoggingSystem.SYSTEMS 中列出的类的存在 - Logback、Log4j 或 JUL)并从应用程序提供的日志配置文件或 Spring 配置它Boot 自己的默认配置文件,与 Spring Boot 本身打包在一起。

当将 Grails 3 应用程序作为 war 文件部署到 JBoss EAP 6(又名 WildFly 7)时,这会导致问题。 应用程序初始化时,Spring Boot 找到 JBoss 提供的 JUL 日志实现 (org.jboss.logmanager.LogManager),并在其上调用readConfiguration() 方法,从而弄乱了日志配置。

  • 我想继续使用 JBoss 提供的日志记录实现和 JBoss 提供的日志记录配置,而不是在我的 war 文件中打包单独的日志记录实现。这使我可以从服务器的配置文件中配置应用服务器上的所有应用程序。

有什么方法可以禁用 Spring Boot 的日志自动配置?(我对 Spring Boot 检测和使用日志框架没问题;我只是不这样做'不希望它尝试配置它。)我查看了源代码,但没有看到任何挂钩来控制它。

相关源码:

可能的想法:

  • 在收到ApplicationStartedEventApplicationEnvironmentPreparedEvent 事件(触发日志记录配置)之前,以某种方式从应用程序侦听器列表中删除LoggingApplicationListener

这些其他相关问题解决了我的问题,因为用例不同:

版本:

  • Spring Boot - 1.3.3.RELEASE
  • Grails - 3.1.5

【问题讨论】:

    标签: spring-boot


    【解决方案1】:

    在 Spring Boot 1.3.x 中,您可以编写不做任何事情的 org.springframework.boot.logging.LoggingSystem 的自定义实现,然后将 org.springframework.boot.logging.LoggingSystem 系统属性设置为自定义实现的完全限定类名。

    我是 Spring Boot 1.4.x,不需要自定义实现,只需将 org.springframework.boot.logging.LoggingSystem 系统属性设置为 none 即可。

    【讨论】:

    • 如果我使用这条路线,Spring Boot 会停止记录任何东西吗?还是会写入标准输出?
    • 它将继续通过调用 Commons Logging 进行记录。只要您的应用服务器支持 Commons Logging 或使用类似 SLF4J 的 Commons Logging 替代品,它就会根据您的应用服务器的日志配置记录到您想要的任何位置。
    • 我将如何或在哪里设置此环境属性?我将部署到 JBoss EAP 6 作为战争,如果可能的话,我宁愿不将其设置为服务器上的全局系统属性。有没有一种方便的方法可以在应用程序本身或某些属性文件中设置它? (这是一个 Grails 3 应用程序)
    • 很遗憾没有。它必须是系统属性。
    • 哇。对于那些将应用程序部署到应用程序服务器的人来说,这似乎是一个常见的用例。我很惊讶它不能更容易地为每个应用程序配置,特别是考虑到 Spring Boot 可以很容易地以许多其他方式进行定制。
    【解决方案2】:

    这不是每个人的答案,而是一些提示,如果有帮助,请告诉我:

    你看到了吗? How-To Configure Logging for Spring-Boot + JBOSS 7.1 Server


    此外,在 Spring Boot 1.4 中进行了修复(如果它确实为您修复并且您可以选择升级):Spring Boot Logging initialization

    我对修复的理解:它延迟了记录器初始化,允许您以编程方式定义 java.util.logging.manager:

    System.setProperty("java.util.logging.manager", "org.apache.logging.log4j.jul.LogManager")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-24
      • 2019-06-03
      • 2019-08-30
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      相关资源
      最近更新 更多