【问题标题】:Profile specific logging in Spring BootSpring Boot 中的配置文件特定日志记录
【发布时间】:2021-11-06 00:07:26
【问题描述】:

我们有一个使用 log4j2 的 Spring Boot 应用程序。

我们希望为不同的配置文件使用不同的日志级别。经过一番努力,我发现这对于 log4j2 是不可能的,但对于 logback 是可能的。不过我不想使用 logback。

log4j2 无法做到这一点的原因是 - spring boot 在加载应用程序属性之前就初始化了 log4j2。

因此,我已使用 log4j2.xml 中的所有默认值初始化 log4j2,并且在应用程序启动后,我将获取记录器上下文并以编程方式根据配置文件特定的日志级别更改日志级别。

虽然这行得通,但只是想了解是否有更好的方法。

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: java spring-boot log4j2 spring-profiles spring-properties


【解决方案1】:

根据this blog,可以在配置文件之间分离 log4j2 日志记录。我也做了。

为什么不根据配置文件创建 log4j2.xml?如下所示

spring:
  config:
    activate:
      on-profile: dev

logging:
  config: classpath:log4j2-dev.xml

---
spring:
  config:
    activate:
      on-profile: sandbox

logging:
  config: classpath:log4j2-sb.xml

【讨论】:

  • 我试过这个。真的不行。我在 spring boot 完全初始化后检查了 LoggerContext。它有 configurationSource = NULL_SOURCE。我试过 - LoggerContext.getContext().setConfigLocation(env.getProperty("logging.config")); configurationSource 然后更新到正确的路径。
猜你喜欢
  • 2018-01-05
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 2017-12-26
  • 2017-11-01
  • 2020-02-27
相关资源
最近更新 更多