完美解決Logback configuration error detected的問題
今天在springboot項(xiàng)目中替換log4j2日志的時候遇見的問題,閑話不多說。
錯誤日志
Logging system failed to initialize using configuration from 'classpath:log4j2-dev.xml' java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.joran.spi.Interpreter@3:16 - no applicable action for [appenders], current ElementPath is [[configuration][appenders]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:67 - no applicable action for [Console], current ElementPath is [[configuration][appenders][Console]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@5:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][Console][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@10:119 - no applicable action for [RollingFile], current ElementPath is [[configuration][appenders][RollingFile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][RollingFile][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@12:23 - no applicable action for [Policies], current ElementPath is [[configuration][appenders][RollingFile][Policies]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@13:45 - no applicable action for [TimeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][TimeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:57 - no applicable action for [SizeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][SizeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@16:48 - no applicable action for [DefaultRolloverStrategy], current ElementPath is [[configuration][appenders][RollingFile][DefaultRolloverStrategy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@21:79 - no applicable action for [RollingFile], current ElementPath is [[configuration][appenders][RollingFile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@22:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][RollingFile][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@23:23 - no applicable action for [Policies], current ElementPath is [[configuration][appenders][RollingFile][Policies]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:45 - no applicable action for [TimeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][TimeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@25:57 - no applicable action for [SizeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][SizeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@27:48 - no applicable action for [DefaultRolloverStrategy], current ElementPath is [[configuration][appenders][RollingFile][DefaultRolloverStrategy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@28:79 - no applicable action for [ThresholdFilter], current ElementPath is [[configuration][appenders][RollingFile][ThresholdFilter]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@32:14 - no applicable action for [loggers], current ElementPath is [[configuration][loggers]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@36:64 - no applicable action for [logger], current ElementPath is [[configuration][loggers][logger]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@37:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@38:43 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@39:44 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@43:77 - no applicable action for [logger], current ElementPath is [[configuration][loggers][logger]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@44:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@50:28 - no applicable action for [root], current ElementPath is [[configuration][loggers][root]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@52:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@53:43 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@54:44 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:162) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:56) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:114) at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:309) at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:277) at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240) at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213) 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.environmentPrepared(EventPublishingRunListener.java:74) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:325) at org.springframework.boot.SpringApplication.run(SpringApplication.java:296) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:121) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:189) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:131) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) java.lang.IllegalStateException: Failed to load ApplicationContext at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:124) at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:83) at org.springframework.test.context.web.ServletTestExecutionListener.setUpRequestContextIfNecessary(ServletTestExecutionListener.java:189) at org.springframework.test.context.web.ServletTestExecutionListener.prepareTestInstance(ServletTestExecutionListener.java:131) at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:230) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.createTest(SpringJUnit4ClassRunner.java:228) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner$1.runReflectiveCall(SpringJUnit4ClassRunner.java:287) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.methodBlock(SpringJUnit4ClassRunner.java:289) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:247) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94) at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191) at org.junit.runner.JUnitCore.run(JUnitCore.java:137) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.joran.spi.Interpreter@3:16 - no applicable action for [appenders], current ElementPath is [[configuration][appenders]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:67 - no applicable action for [Console], current ElementPath is [[configuration][appenders][Console]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@5:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][Console][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@10:119 - no applicable action for [RollingFile], current ElementPath is [[configuration][appenders][RollingFile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][RollingFile][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@12:23 - no applicable action for [Policies], current ElementPath is [[configuration][appenders][RollingFile][Policies]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@13:45 - no applicable action for [TimeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][TimeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:57 - no applicable action for [SizeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][SizeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@16:48 - no applicable action for [DefaultRolloverStrategy], current ElementPath is [[configuration][appenders][RollingFile][DefaultRolloverStrategy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@21:79 - no applicable action for [RollingFile], current ElementPath is [[configuration][appenders][RollingFile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@22:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][RollingFile][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@23:23 - no applicable action for [Policies], current ElementPath is [[configuration][appenders][RollingFile][Policies]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:45 - no applicable action for [TimeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][TimeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@25:57 - no applicable action for [SizeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][SizeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@27:48 - no applicable action for [DefaultRolloverStrategy], current ElementPath is [[configuration][appenders][RollingFile][DefaultRolloverStrategy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@28:79 - no applicable action for [ThresholdFilter], current ElementPath is [[configuration][appenders][RollingFile][ThresholdFilter]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@32:14 - no applicable action for [loggers], current ElementPath is [[configuration][loggers]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@36:64 - no applicable action for [logger], current ElementPath is [[configuration][loggers][logger]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@37:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@38:43 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@39:44 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@43:77 - no applicable action for [logger], current ElementPath is [[configuration][loggers][logger]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@44:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@50:28 - no applicable action for [root], current ElementPath is [[configuration][loggers][root]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@52:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@53:43 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@54:44 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:316) at org.springframework.boot.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:277) at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240) at org.springframework.boot.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:213) 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.environmentPrepared(EventPublishingRunListener.java:74) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:54) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:325) at org.springframework.boot.SpringApplication.run(SpringApplication.java:296) at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:121) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:98) at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:116) ... 24 more Caused by: java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.joran.spi.Interpreter@3:16 - no applicable action for [appenders], current ElementPath is [[configuration][appenders]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@4:67 - no applicable action for [Console], current ElementPath is [[configuration][appenders][Console]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@5:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][Console][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@10:119 - no applicable action for [RollingFile], current ElementPath is [[configuration][appenders][RollingFile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@11:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][RollingFile][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@12:23 - no applicable action for [Policies], current ElementPath is [[configuration][appenders][RollingFile][Policies]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@13:45 - no applicable action for [TimeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][TimeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@14:57 - no applicable action for [SizeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][SizeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@16:48 - no applicable action for [DefaultRolloverStrategy], current ElementPath is [[configuration][appenders][RollingFile][DefaultRolloverStrategy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@21:79 - no applicable action for [RollingFile], current ElementPath is [[configuration][appenders][RollingFile]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@22:96 - no applicable action for [PatternLayout], current ElementPath is [[configuration][appenders][RollingFile][PatternLayout]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@23:23 - no applicable action for [Policies], current ElementPath is [[configuration][appenders][RollingFile][Policies]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@24:45 - no applicable action for [TimeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][TimeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@25:57 - no applicable action for [SizeBasedTriggeringPolicy], current ElementPath is [[configuration][appenders][RollingFile][Policies][SizeBasedTriggeringPolicy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@27:48 - no applicable action for [DefaultRolloverStrategy], current ElementPath is [[configuration][appenders][RollingFile][DefaultRolloverStrategy]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@28:79 - no applicable action for [ThresholdFilter], current ElementPath is [[configuration][appenders][RollingFile][ThresholdFilter]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@32:14 - no applicable action for [loggers], current ElementPath is [[configuration][loggers]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@36:64 - no applicable action for [logger], current ElementPath is [[configuration][loggers][logger]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@37:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@38:43 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@39:44 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@43:77 - no applicable action for [logger], current ElementPath is [[configuration][loggers][logger]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@44:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][logger][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@50:28 - no applicable action for [root], current ElementPath is [[configuration][loggers][root]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@52:42 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@53:43 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@54:44 - no applicable action for [appender-ref], current ElementPath is [[configuration][loggers][root][appender-ref]] at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:162) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithSpecificConfig(AbstractLoggingSystem.java:66) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:56) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:114) at org.springframework.boot.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:309) ... 38 more Disconnected from the target VM, address: '127.0.0.1:65035', transport: 'socket' Process finished with exit code -1
首先我們看上面的錯誤日志
Logging system failed to initialize using configuration from 'classpath:log4j2-dev.xml' java.lang.IllegalStateException: Logback configuration error detected:
如果只看這兩句的話我們可能會認(rèn)為是我們的日志文件log4j2-dev.xml配置錯了,或者路徑找不到,其實(shí)不然。正解是我們pom文件配置的有問題,jar包存在沖突,下面來看下我們的pom文件吧
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
上面的pom文件是最初報錯時的配置文件,看上面的配置文件貌似沒有問題,我們需使用log4j2日志的starter也已經(jīng)引入了,但是這里我們需要注意一點(diǎn)就是我們在引入spring-boot-starter-web包的時候他里面默認(rèn)使用了logback日志,這樣就會產(chǎn)生日志包的沖突,其實(shí)不只是starter-web包默認(rèn)引入的logback還有很多的包默認(rèn)引入的logback包,看下圖

上圖中是這個pom文件的jiar包結(jié)構(gòu)示意圖,log4j2部分就是我們新引入的spring-boot-starter-log4j2包,上圖中我通過黃線畫出了現(xiàn)在系統(tǒng)中所有l(wèi)ogback的引入,可以看出所有引用,這里涉及到幾個包,分別是web包,mybatis包,jdbc包。那我們現(xiàn)在要解決jar包沖突的問題是不是需要每個包下都排除默認(rèn)引用的logger日志呢,理論上是完全沒有問題的,但是那樣豈不是很費(fèi)事,2種解決辦法。
解決辦法1
統(tǒng)一排除
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
解決辦法2
那我只導(dǎo)用了web包,不想導(dǎo)入spring-boot-starter能不能解決呢?
答 : 能
<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>
看見第二個解決辦法,問題是不是來了。很多包都默認(rèn)使用的logback,你單獨(dú)排除了web包是不是還會出現(xiàn)這個問題,
答 : 是的會出現(xiàn),這里就需要知道pom文件的加載順序了,pom文件的加載順序也是從上至下執(zhí)行,那么我們就需要把web包放到pom文件中的第一位,在向下執(zhí)行的時候也會排除所有的默認(rèn)logger了。
上面就是兩種解決辦法。希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用BigDecimal進(jìn)行精確運(yùn)算(實(shí)現(xiàn)加減乘除運(yùn)算)
這篇文章主要介紹了如何使用BigDecimal進(jìn)行精確運(yùn)算,最后提供了一個工具類,該工具類提供加,減,乘,除運(yùn)算2013-11-11
Springboot基于assembly的服務(wù)化打包方案及spring boot部署方式
這篇文章主要介紹了Springboot基于assembly的服務(wù)化打包方案及springboot項(xiàng)目的幾種常見的部署方式,本文主要針對第二種部署方式提供一種更加友好的打包方案,需要的朋友可以參考下2017-12-12
Struts2 ActionContext 中的數(shù)據(jù)詳解
這篇文章主要介紹了Struts2 ActionContext 中的數(shù)據(jù)詳解,需要的朋友可以參考下2016-07-07
利用Java實(shí)現(xiàn)在PDF中添加工具提示
這篇文章主要介紹了如何通過Java在PDF中添加工具提示,文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)或工作有一定的參考價值,感興趣的可以學(xué)習(xí)一下2022-01-01
SpringBoot 下的 Static 文件夾打包成前端資源的示例代碼
這篇文章主要介紹了SpringBoot 下的 Static 文件夾如何打包成前端資源,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
詳解Java面向?qū)ο笾鄳B(tài)的原理與實(shí)現(xiàn)
多態(tài)是指不同的子類在繼承父類后分別都重寫覆蓋了父類的方法,即父類同一個方法,在繼承的子類中表現(xiàn)出不同的形式。本文將詳解多態(tài)的原理與實(shí)現(xiàn),感興趣的可以學(xué)習(xí)一下2022-05-05
Exception in thread main java.lang.NoClassDefFoundError錯誤解決方
這篇文章主要介紹了Exception in thread main java.lang.NoClassDefFoundError錯誤解決方法,需要的朋友可以參考下2016-08-08

