最近测试在spring boot项目中引入log4j日志工具,碰到了一系列的问题,费了好大的劲,终于解决完成,现做个记录,供大家参考,有错误的地方,还望指出:
spring boot的框架版本:1.4.3.RELEASE;
jdk版本:1.8;
问题1:
1.3.8以后的spring boot版本对log4j不支持,无法通过maven加载相应的jar包,需要改为log4j2;
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>
spring-boot-starterlog4j2
</artifactId>
</dependency>
问题2:
log4j2与logbackjar包冲突,无法正常使用日志
这个问题最坑,有的文章说在
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
配置下面加下面这个去除语句,去除springboot中自带的logback日志工具;
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>
spring-boot-starter-logging
</artifactId>
</exclusion>
</exclusions>
经过我的使用经历,这个解决不了问题,需要在下面的dependence中加入去除语句
<groupId>org.springframework.boot</groupId>
<artifactId>
spring-boot-starter
</artifactId>
问题3:
在maven build 时,报错jar包加载出错:invalid LOC header (bad signature)
把相应的jar包删除,重新下载即可;
问题4:
配置文件的错误
(1)log4j2的配置文件不能再是 .properties 类型的文件,Log4j2提供了三种ConfiguarationFactory的实现:JSON、YAML、XML。
(2)文件的位置要与设置的保持匹配
可以在application.properties文件中指定:
logging.config=classpath:log4j2.xml ;
在默认情况下,系统选择configuration文件的优先级如下:(classpath为scr文件夹)
classpath下名为 log4j-test.json 或者log4j-test.jsn文件
classpath下名为 log4j2-test.xml
classpath下名为 log4j.json 或者log4j.jsn文件
classpath下名为 log4j2.xml