升级logback至1.5.15版本后应用启动报错,如何解决?
Logback升级至1.5.15后启动失败的修复方案
问题原因
Logback 1.5.9及后续版本移除了ch.qos.logback.core.boolex.JaninoEventEvaluatorBase类,同时重构了Janino相关事件评估器的实现。若项目的logback配置文件仍沿用旧的评估器配置逻辑,就会触发NoClassDefFoundError错误,进而导致Tomcat嵌入式服务器启动失败。
修复步骤
1. 更新Logback配置文件
检查logback.xml或logback-access.xml,将旧的<janinoEventEvaluator>标签替换为标准<eventEvaluator>标签,并指定新的实现类:
- 旧配置示例:
<janinoEventEvaluator name="customEvaluator"> <expression>logger.contains("api") && level >= INFO</expression> </janinoEventEvaluator> - 新配置示例:
<eventEvaluator name="customEvaluator" class="ch.qos.logback.core.boolex.JaninoEventEvaluator"> <expression>logger.contains("api") && level >= INFO</expression> </eventEvaluator>
2. 确认Janino依赖完整性
项目若依赖Janino处理表达式评估,需确保依赖已正确引入,且版本与Logback 1.5.15兼容:
- Maven依赖配置:
<dependency> <groupId>org.codehaus.janino</groupId> <artifactId>janino</artifactId> <version>3.1.12</version> </dependency> - Gradle依赖配置:
implementation 'org.codehaus.janino:janino:3.1.12'
3. 清理并重建项目
执行项目构建工具的清理命令(Maven:mvn clean,Gradle:./gradlew clean),清除旧依赖缓存后重新构建,确保新的Logback版本及依赖被正确加载。
4. 检查Logback Access Valve配置
若错误由LogbackValve触发,需同步检查logback-access.xml中的所有评估器配置,确保无旧类引用残留。
额外提示
- 若使用Spring Boot,需保证Spring Boot版本与Logback 1.5.15兼容(推荐Spring Boot 3.2.x及以上版本)
- 统一
logback-classic、logback-core、logback-access(若使用)的版本,避免混合不同版本组件引发冲突
内容的提问来源于stack exchange,提问作者Gustavo Cesário
相关产品推荐
相关产品推荐

