Spring Boot启动报错:logback-spring.xml配置错误修复方案
Spring Boot启动时Logback配置错误:
<properties>、<dependency>标签无对应处理动作 问题描述
使用旧版本Gradle构建Spring Boot应用,构建过程无报错,但启动时触发Logback配置错误,提示logback-spring.xml中的<properties>、<dependency>等标签无对应处理动作,IntelliJ也标记这些标签为非法。
Gradle配置文件 (build.gradle)
buildscript { repositories { mavenCentral() } /*dependencies{ classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.1.RELEASE") }*/ } plugins { id 'org.springframework.boot' version '2.6.2' id 'io.spring.dependency-management' version '1.0.11.RELEASE' id 'java' } group 'eresult' version '1.0-SNAPSHOT' apply plugin: "java" println "Gradle "+gradle.gradleVersion jar { manifest { attributes( 'Main-Class': 'it.eresult.Application' ) } } sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { compile ("org.springframework.boot:spring-boot-starter-web") compile group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '7.2.0.jre8' compile 'com.google.code.gson:gson:2.8.6' }
启动报错信息
Exception in thread "main" java.lang.IllegalStateException: java.lang.IllegalStateException: Logback configuration error detected: at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:80) ERROR in ch.qos.logback.core.joran.spi.Interpreter@33:17 - no applicable action for [properties], current ElementPath is [[configuration][properties]] at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60) ERROR in ch.qos.logback.core.joran.spi.Interpreter@34:34 - no applicable action for [spring.security.version], current ElementPath is [[configuration][properties][spring.security.version]] at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132) ERROR in ch.qos.logback.core.joran.spi.Interpreter@37:17 - no applicable action for [dependency], current ElementPath is [[configuration][dependency]] at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:313) ERROR in ch.qos.logback.core.joran.spi.Interpreter@38:18 - no applicable action for [groupId], current ElementPath is [[configuration][dependency][groupId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@39:21 - no applicable action for [artifactId], current ElementPath is [[configuration][dependency][artifactId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@40:18 - no applicable action for [version], current ElementPath is [[configuration][dependency][version]] ... 18 common frames omitted ERROR in ch.qos.logback.core.joran.spi.Interpreter@42:17 - no applicable action for [dependency], current ElementPath is [[configuration][dependency]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@43:18 - no applicable action for [groupId], current ElementPath is [[configuration][dependency][groupId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@44:21 - no applicable action for [artifactId], current ElementPath is [[configuration][dependency][artifactId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@45:18 - no applicable action for [version], current ElementPath is [[configuration][dependency][version]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@47:17 - no applicable action for [dependency], current ElementPath is [[configuration][dependency]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@48:18 - no applicable action for [groupId], current ElementPath is [[configuration][dependency][groupId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@49:21 - no applicable action for [artifactId], current ElementPath is [[configuration][dependency][artifactId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@50:18 - no applicable action for [version], current ElementPath is [[configuration][dependency][version]] at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:328) at org.springframework.boot.context.logging.LoggingApplicationListener.initialize(LoggingApplicationListener.java:282) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEnvironmentPreparedEvent(LoggingApplicationListener.java:240) at org.springframework.boot.context.logging.LoggingApplicationListener.onApplicationEvent(LoggingApplicationListener.java:216) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:176) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:169) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:143) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:131) at org.springframework.boot.context.event.EventPublishingRunListener.environmentPrepared(EventPublishingRunListener.java:85) at org.springframework.boot.SpringApplicationRunListeners.lambda$environmentPrepared$2(SpringApplicationRunListeners.java:66) at java.util.ArrayList.forEach(ArrayList.java:1259) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:120) at org.springframework.boot.SpringApplicationRunListeners.doWithListeners(SpringApplicationRunListeners.java:114) at org.springframework.boot.SpringApplicationRunListeners.environmentPrepared(SpringApplicationRunListeners.java:65) at org.springframework.boot.SpringApplication.prepareEnvironment(SpringApplication.java:338) at org.springframework.boot.SpringApplication.run(SpringApplication.java:296) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1290) at it.eresult.Application.main(Application.java:13) Caused by: java.lang.IllegalStateException: Logback configuration error detected: ERROR in ch.qos.logback.core.joran.spi.Interpreter@33:17 - no applicable action for [properties], current ElementPath is [[configuration][properties]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@34:34 - no applicable action for [spring.security.version], current ElementPath is [[configuration][properties][spring.security.version]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@37:17 - no applicable action for [dependency], current ElementPath is [[configuration][dependency]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@38:18 - no applicable action for [groupId], current ElementPath is [[configuration][dependency][groupId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@39:21 - no applicable action for [artifactId], current ElementPath is [[configuration][dependency][artifactId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@40:18 - no applicable action for [version], current ElementPath is [[configuration][dependency][version]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@42:17 - no applicable action for [dependency], current ElementPath is [[configuration][dependency]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@43:18 - no applicable action for [groupId], current ElementPath is [[configuration][dependency][groupId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@44:21 - no applicable action for [artifactId], current ElementPath is [[configuration][dependency][artifactId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@45:18 - no applicable action for [version], current ElementPath is [[configuration][dependency][version]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@47:17 - no applicable action for [dependency], current ElementPath is [[configuration][dependency]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@48:18 - no applicable action for [groupId], current ElementPath is [[configuration][dependency][groupId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@49:21 - no applicable action for [artifactId], current ElementPath is [[configuration][dependency][artifactId]] ERROR in ch.qos.logback.core.joran.spi.Interpreter@50:18 - no applicable action for [version], current ElementPath is [[configuration][dependency][version]] at org.springframework.boot.logging.logback.LogbackLoggingSystem.loadConfiguration(LogbackLoggingSystem.java:179) at org.springframework.boot.logging.AbstractLoggingSystem.initializeWithConventions(AbstractLoggingSystem.java:80) at org.springframework.boot.logging.AbstractLoggingSystem.initialize(AbstractLoggingSystem.java:60) at org.springframework.boot.logging.logback.LogbackLoggingSystem.initialize(LogbackLoggingSystem.java:132) at org.springframework.boot.context.logging.LoggingApplicationListener.initializeSystem(LoggingApplicationListener.java:313) ... 18 more Execution failed for task ':it.eresult.Application.main()'. > Process 'command 'C:/Users/michele.castriotta/.jdks/corretto-1.8.0_422/bin/java.exe'' finished with non-zero exit value 1 * Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
问题logback-spring.xml文件
<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n </Pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ALL</level> </filter> </appender> <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>/var/log/clean-ecg-service.%d{yyyy-MM-dd}.%i.log.gz </FileNamePattern> <maxHistory>60</maxHistory> <maxFileSize>50MB</maxFileSize> </rollingPolicy> <encoder> <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX"} [%thread] %-5level %logger{35} - %msg %n </Pattern> </encoder> </appender> <logger name="it.eresult" level="INFO"/> <root level="ERROR"> <appender-ref ref="consoleAppender"/> <appender-ref ref="dailyRollingFileAppender"/> </root> </configuration> <properties> <spring.security.version>3.1.4.RELEASE</spring.security.version> </properties> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-core</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>${spring.security.version}</version> </dependency> <dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-config</artifactId> <version>${spring.security.version}</version> </dependency>
修复方案
核心问题分析
<properties>、<dependency>是Maven pom.xml的专属语法,完全不属于Logback配置文件的合法标签,且这些标签被错误地写在了Logback的<configuration>闭合标签之后,直接破坏了XML结构,导致Logback无法解析配置。
具体修复步骤
清理Logback配置文件
移除logback-spring.xml中所有的<properties>、<dependency>标签及内容,只保留Logback合法的配置标签(如<configuration>、<appender>、<logger>、<root>等)。修正后的
logback-spring.xml:<?xml version="1.0" encoding="UTF-8"?> <configuration> <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>.%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg %n</Pattern> </encoder> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ALL</level> </filter> </appender> <appender name="dailyRollingFileAppender" class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <FileNamePattern>/var/log/clean-ecg-service.%d{yyyy-MM-dd}.%i.log.gz</FileNamePattern> <maxHistory>60</maxHistory> <maxFileSize>50MB</maxFileSize> </rollingPolicy> <encoder> <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss,SSSXXX"} [%thread] %-5level %logger{35} - %msg %n</Pattern> </encoder> </appender> <logger name="it.eresult" level="INFO"/> <root level="ERROR"> <appender-ref ref="consoleAppender"/> <appender-ref ref="dailyRollingFileAppender"/> </root> </configuration>迁移依赖配置到Gradle
如果需要添加Spring Security依赖,在build.gradle的dependencies块中添加(Spring Boot插件会自动管理版本,无需手动指定):dependencies { implementation "org.springframework.boot:spring-boot-starter-web" implementation group: 'com.microsoft.sqlserver', name: 'mssql-jdbc', version: '7.2.0.jre8' implementation 'com.google.code.gson:gson:2.8.6' // 添加Spring Security依赖 implementation 'org.springframework.boot:spring-boot-starter-security' }注意:Gradle中
compile已被废弃,推荐使用implementation替代。重新构建并启动
执行gradle clean build清理旧构建产物,再启动应用即可解决Logback配置错误。
内容的提问来源于stack exchange,提问作者bircastri
相关产品推荐
相关产品推荐

