spring boot内部使用Commons Logging来记录日志,但也保留外部接口可以让一些日志框架来进行实现,例如Log4J2, Logback。spring boot使用Logback作为日志实现的框架。
今天整理这个文章的原因就是网上有很多Log4J2的配置博客,但是有一大半都是转载的,而且配置也是不完全的。下面是实际操作的具体步骤。
1:在pom中引入Log4j2的依赖,同时exclusion 掉spring boot自带的logging back
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</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>
</dependency>
2:在配置文件application.properties添加log4j2的配置
logging.config=classpath:log4j2.xml
3:在 src/main/resources 创建log4j2.xml 并写入如下配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="INFO">
<!—设置一个控制台log输出器-->
<Appenders>
<Console name="Console" target="SYSTEM_OUT" follow="true">
<PatternLayout>
<pattern>[%-5p] %d %c - %m%n</pattern>
</PatternLayout>
</Console>
<!—设置一个文件log输出器-->
<File name="File" fileName="../../logs/gather-plugin/sisc-gather-plugin.log" append="false">
<PatternLayout>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %msg%xEx%n</pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console"/>
<!--所有的log都输出到console-->
</Root>
<!—只捕获com.cxy.xxx.service下的的log都输出到log文件中-->
<Logger name="com.cxy.xxx.service" level="INFO" additivity="false">
<AppenderRef ref="File" />
<!--只有com.cxy.xxx.service包下的 log 才会输出到文件-->
</Logger>
</Loggers>
</Configuration>
Additivity=false; 表示每次重启项目,将log文件情况,改为true表示重启后追加log
上面就是spring boot 整合 log4j2的完整配置步骤。
网友评论