现在所有的项目都要集成公司统一鹰眼系统,方便系统日志的统一管理,日志分析,日志的维护。于是看了看鹰眼系统,集成必须要求日志框架为log4j2,看之前的项目基本都是log4j,于是看了看log4j和log4j2的区别。发现以前竟然没关注到这个东西,说实在感觉很惭愧。于是简单的总结了几点区别。
一、log4j
1、log4j需要引入一个依赖
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
2、log4j的配置文件一般推荐使用properties文件
3、还需要定义监听器,通过spring找到log4j
<!--由Spring载入的Log4j配置文件位置-->
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
二、log4j2
1、log4j2需要引入2个依赖
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
<scope>runtime</scope>
</dependency>
2、log4j2不用使用监听器加载,默认就是加载resources目录下,但配置文件名称必须为log4j2.xml
三、springboot集成log4j2,日志不输出到文件
<!--******************************************log4j2************************************************-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<version>${starter-log4j2}</version>
</dependency>
原因是没有将spring-boot-starter-logging排除,应为springboot默认是以logback为日志框架的实现。仅记录到控制台,不会写入日志文件。
本文介绍了Log4j与Log4j2的区别,并详细讲述了SpringBoot项目中集成Log4j2时日志无法输出到文件的原因,即未排除默认的日志框架spring-boot-starter-logging,导致日志只输出到控制台。
1414

被折叠的 条评论
为什么被折叠?



