【问题标题】:Spring boot is unable to pick log4j2 dependencySpring Boot 无法选择 log4j2 依赖项
【发布时间】:2019-07-13 02:27:45
【问题描述】:

找不到类似的问题,所以提出这个问题。如有重复,请见谅。

尝试在 spring boot(版本 1.5.9)应用程序中使用 log4j2-

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>

但不知何故spring boot仍在寻找logback依赖(mvn依赖树中到处都排除了logback依赖)-

Exception in thread "main" java.lang.NoClassDefFoundError: ch/qos/logback/classic/turbo/TurboFilter
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
    at java.lang.Class.getConstructor0(Class.java:3075)
    at java.lang.Class.getConstructor(Class.java:1825)
    at org.springframework.boot.logging.LoggingSystem.get(LoggingSystem.java:169)
    at org.springframework.boot.logging.LoggingSystem.get(LoggingSystem.java:160)
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationStartingEvent(LoggingApplicationListener.java:229)
    at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:209)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139)
    at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:122)
    at org.springframework.boot.context.event.EventPublishingRunListener.starting(EventPublishingRunListener.java:69)
    at org.springframework.boot.SpringApplicationRunListeners.starting(SpringApplicationRunListeners.java:48)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:292)
    at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134)
    at Test.main(Test.java:30)
Caused by: java.lang.ClassNotFoundException: ch.qos.logback.classic.turbo.TurboFilter
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 17 more

【问题讨论】:

  • 你有log4j2的配置文件吗,springboot需要它来检测log4j
  • 是的,log4j2.xml 文件在类路径中。

标签: spring spring-boot logback log4j2 slf4j


【解决方案1】:

似乎缺少 Log4j2 配置文件。在您的资源中添加配置文件,这可能会解决问题。

【讨论】:

  • log4j2.xml 在类路径中可用。
  • 貌似Spring Boot会自动配置LogBack。所以,如果你有 Spring boot starter 依赖,也排除 starter-logging。
猜你喜欢
  • 2018-05-13
  • 2021-04-29
  • 2022-01-01
  • 2018-07-04
  • 2016-06-21
  • 1970-01-01
  • 2020-10-02
  • 2020-07-08
  • 2022-06-28
相关资源
最近更新 更多