问题总结
想到哪写哪了,不知道为什么要先写总结。。。。。
由于自己做的一个springmvc小Demo中需要使用log4j2,所以自己就自己整合了一下,但是途中出现了很多问题,现在进行一个简要的汇总,主要有以下几点:
- log4j2 是 log4j的升级版本,其中一个变化是,前者不再支持后者所支持的通过 .properties 配置文件进行相关配置,而是统一采用位于 Resource 目录下的 log4j2.xml 进行配置。
- 使用 log4j2需要引入大量的依赖,并且依赖之间粘合度较高,缺一不可,其次就是需要解决依赖之间的冲突问题,如不解决,照样白搭。
- 依赖冲突不仅仅出现在你自己引入的依赖当中,还可能出现在你引入的依赖中的一个类文件引入了另外一个依赖,而这两个依赖是不兼容的,在报错日志中可能提示的依赖你并没有引入,原因就是这个依赖是你引的那个依赖引入的,解决办法就是更换依赖版本。
以下是我个人针对 log4j2 的最佳实践(maven依赖),供大家参考:
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-web</artifactId>
<version>2.17.1</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.15.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.17.1</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.15.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-api -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.25</version>
<scope>compile</scope>
</dependency>