最近发布项目的时候发现控制台打印的日志较往常多了很多,仔细一看,debug和info信息也赫然在列,打开log4j.xml配置文件看一下:
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/" debug="false">
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="[%d{dd/MM/yy hh:mm:ss:sss z}] %t %5p %c{2}: %m%n" />
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMax" value="ERROR" />
<param name="LevelMin" value="INFO" />
</filter>
</appender>
<appender name="catAppender" class="com.dianping.cat.log4j.CatAppender">
<param name="Threshold" value="ERROR"></param>
</appender>
<root>
<priority value="error" />
<!-- 日志输出最低级别 -->
<appender-ref ref="CONSOLE" />
<appender-ref ref="catAppender" />
</root>
</log4j:configuration>
配置的是error级别,显然不应该出现debug信息的,一定是配置文件没起作用,什么原因呢?
查资料找到一种解释:Log4j和logback冲突了,这样会导致Log4j的日志级别降低到DEBUG级别。
项目用的是log4j,没用到logback,难道是依赖隐式地加入了logback?打开依赖看下,还真的有logback:
知道了原因,就在maven依赖中把logback去掉。
去除依赖的方法:
1. 调到引入logback的依赖处,如图,右键->Jump To Source
2. 排掉logback依赖
<dependency>
<groupId>com.weimob.saas.foundation</groupId>
<artifactId>wxbase-core-service-client</artifactId>
<version>1.3.2-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
</exclusion>
</exclusions>
</dependency>
重新发布服务,日志打印正常了。