现在所有的项目都要集成公司统一鹰眼系统,方便系统日志的统一管理,日志分析,日志的维护。于是看了看鹰眼系统,集成必须要求日志框架为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为日志框架的实现。仅记录到控制台,不会写入日志文件。