Maven管理的纯Spring工程中,原本是使用log4j打log的,结果依赖的库(core-data项目)中又另外引用了logback文件(logback与原来的log4j只能二选一),导致配置失效
以下是多个lib冲突
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/app/top-media-frag/lib/logback-classic-1.0.13.
jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/opt/app/top-media-frag/lib/slf4j-log4j12-1.7.5.jar
!/org/slf4j/impl/StaticLoggerBinder.class]
将项目部署后删除多余的lib文件
方便点使用存成shell文件,部署脚本自动调用
rm -f -v logback*
在pom.xml文件中exclusion排除冲突的包,避免core-data对主项目的影响
如下排除了关于SLF4J的包,具体在pom.xml文件中查看再排除
(Dependency Hierarchy中查看)
<dependency>
<groupId>com.nickwongfree.mp</groupId>
<artifactId>core-data</artifactId>
<version>1.1</version>
<!--排除三个冲突-->
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
问题的根源是依赖的库(core-data项目)本身不规范,不应该包含具体的SLF4J的库,让原开发人员处理即可
另:Spring-MVC有更简洁方式
编程规范呀,特别是当项目规模大起来之后,
不遵守的规范严重影响了效率
[1] slf4j日志的使用
[2] stackoverflow上回答
[3] 为什么要使用SLF4J而不是Log4J