Spring中SLF4J多个绑定冲突问题
来源:互联网 发布:孕妇护肤品 知乎 编辑:程序博客网 时间:2024/05/18 09:08
问题
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
0 0
- Spring中SLF4J多个绑定冲突问题
- SLF4J-jar包多绑定冲突解决
- 启动hbase时候SLF4J多个绑定问题
- kylin jdbc中slf4j版本冲突问题
- Cocos2dx中播放多个音效冲突问题
- 多个setInterval 冲突问题
- Spring MVC 数据绑定多个对象
- Java日志框架——JCL(Log4J,Java Logging API)转SLF4J过程中重复依赖冲突问题
- 解决was8.5下自带log4j和slf4j的jar包与应用中jar包冲突问题
- 解决多个jquery并存冲突问题
- 解决多个jquery并存冲突问题
- 解决多个jquery并存冲突问题
- 多个Laravel项目的冲突问题
- 解决java多个版本冲突问题
- Spring中配置SLF4J和Log4J
- spring中使用slf4j记录日志
- Maven POM slf4j 冲突
- 解决slf4j 冲突
- hdu1213-有多少桌子 并查集
- C#控制台基础 string是一种特殊的引用类型 特点实例
- Linux下在文件内部指定行(首行、末尾行等)插入内容
- 到天宫做客(模拟)
- 类的静态成员详解
- Spring中SLF4J多个绑定冲突问题
- 2016 cocoapods的安装和使用以及版本升级遇到的问题
- 斐波那契数列
- 节点克隆
- y数组 join();concat();pop();push();
- C/C++ opencv 读取网络摄像头程序
- css3设置居中
- 后台拼接HTML显示到前台
- iOS获取照片EXif信息