运行Apache Velocity模板时SLF4J调试信息干扰,如何抑制?
解决SLF4J多绑定调试信息干扰的问题
我之前也被这个问题烦过!SLF4J的这类重复绑定提示确实会盖过重要日志,结合你的情况(Velocity 2.x + 两个slf4j-simple Jar),给你几个实用的解决办法:
1. 移除重复的SLF4J绑定Jar包
你的日志里明确显示有两个版本的slf4j-simple Jar:
SLF4J: Found binding in [jar:file:/home/user1/Package/installer/lib/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/user1/Package/installer/lib/slf4j-simple-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
直接去/home/user1/Package/installer/lib/目录里删掉旧版本的slf4j-simple-1.7.5.jar,保留1.7.25版本的即可——新版本通常修复了更多问题,也能彻底解决多绑定的根源。
2. 临时调整SLF4J日志级别(不想删Jar时用)
如果暂时没法修改Jar包,可以通过配置把SLF4J的日志级别调高,屏蔽调试级别的提示:
- 创建一个名为
simplelogger.properties的文件,放到项目的classpath下(比如和你的Velocity配置文件同目录) - 在文件里添加以下内容:
这样SLF4J只会输出WARN及以上级别的日志,那个多绑定的调试提示就不会再出现了。org.slf4j.simpleLogger.defaultLogLevel=warn
3. 确认Velocity的日志配置正确
Velocity 2.x原生支持SLF4J作为日志实现,确保你的velocity.properties里配置了正确的日志处理器:
runtime.log.logsystem.class=org.apache.velocity.runtime.log.SLF4JLogChute
这能保证Velocity的日志完全通过SLF4J输出,避免额外的日志冲突。
内容的提问来源于stack exchange,提问作者JavaSheriff
相关产品推荐
相关产品推荐

