阅读文章需要对log4j和maven有一定了解
Spring在创建ApplicationContext时在控制台会有一系列INFO级别的启动输出,如下↓
image想要屏蔽这些输出需要在log4j中做出相关配置,即把Spring在控制台的最低日志输出级别设置为WARN(默认是INFO)。在Spring4.x之前只需要在项目的log4j.properties中加入log4j.category.xxx=WARN,这里的xxx是包的名字,可以从日志输出信息中找到。比如上图中的输出来自org.springframework.beans.factory.xml和org.springframework.context.support,所以我在log4j.properties加入以下两句话。
log4j.category.org.springframework.beans.factory.xml=WARN
log4j.category.org.springframework.context.support=WARN
(ps. 这里的设置会对xxx包下的所有子包都有效,如果想干脆一点,可以直接写:log4j.category.org.springframework = WARN)
但是在Spring 4.x 中日志输出用的不是log4j而是commons.logging,所以无论你在log4j.properties写什么都没用。
一个可行解决方案为:把Spring的日志输出换回log4j,再进行上面所说的配置。
切换过程如下:
- 在pom.xml中为spring的dependency加入exclusions,排除commons-logging (我只引入了spring-context这一个spring dependency, 如果有很多spring dependency好像只需要在spring-core中加入exclusions,如果出问题可以在所有的spring dependency中都加上):
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.18.RELEASE</version>
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
- 添加下面的新dependency
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
-
重载maven
-
在log4j.properties中加入上文说到的配置
网友评论