今天用maven构建一个spring4+mybatis的项目遇到了一个小问题
配置log4j2.xml文件不起作用。
调查了一番发现slf4j的jar用错了。
修改前引用的包
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
上面用的是jcl-voer-slf4j
用这个的时候log4j2.xml不起作用,只有log4j 1的配置方式起作用
后来改成
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>${slf4j.version}</version>
</dependency>
用的是log4j-over-slf4j
这回log4j2.xml起作用了
具体原因请参照下面的文章,非常感谢文章的作者,要不就是不知其所以然了。
spring项目slf4j
顺便说一下,用servlet3,log4j2在web.xml里边配置可以不写了
就是下面这个
<context-param>
<param-name>log4jConfiguration</param-name>
<param-value>classpath:log4j2.xml</param-value>
</context-param>