一、前言
最近升级一个老项目,发面日志没有按照预期的生成。
1、resource下面有logback配置但没有生成日志
检查resource目录下,发现有logback.xml配置,但部署在服务器的项目没有按配置生成日志。于是启动本地tomcat发现日志按logback配置生成了。
检查了下logback.xml配置内容,发现并没有什么不同。看了下在控台输出的日志,发现下面这段
SLF4J: Class path contains multiple SLF4J bindings.
slf4j 包含多个slf4j的绑定,我们知道,slf4j是一个门面 ,市面上有很多日志框架比如:log4j ,common log,logback等。
目前我们用的是logback。
而这里告诉我们:SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
,实际绑定的是Log4jLoggerFactory
。
并且日志也明确说明,有2个jar提供了StaticLoggerBinde r.clas
,所以这里需要把所有引用log4j的地方去掉,
2、去掉Log4j依赖引用
其实控台打印的日志中还有一行提示:SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
这里举了个例说明如何排除log4j冲突jar,如下:
这里直接引的log4j的jar很好去掉,间接引的 需要在用Dependency Analyzer
中搜索,发现zookeep的jar中引用了Log4j,于是添加如下:
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper-version}</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
重启项目 解决。