spring boot项目从零开始-集成log4j2
简述
环境
Idea
log4j2
说明
代码:https://gitee.com/ydfind/spring_boot_demo/tree/dev-log/
目录:
步骤
pom.xml
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<!-- 添加web starter的依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- log -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</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>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
application.yml
server:
port: 8182
tomcat:
uri-encoding: UTF-8
logging:
config: classpath:log4j2.xml
log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- status指定log4j本身的日志打印级别 -->
<!-- 配置文件发生修改,在monitorInterval时间即5s内,重新加载,无需重启 -->
<Configuration status="WARN" monitorInterval="5">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout charset="UTF-8" pattern="[%d] [%t] [%-5level] %logger{36} - %msg%n" />
</Console>
<RollingFile name="RollingFileInfo" filePermissions="rw-r--r--"
fileName="/var/log/springboot/spring-boot-start0.log"
filePattern="/var/log/springboot/spring-boot-start0-%d{yyyy-MM-dd}-%i.log">
<Filters>
<ThresholdFilter level="INFO" />
</Filters>
<PatternLayout charset="UTF-8" pattern="[%d{HH:mm:ss:SSS}] [%p] - %l - %m%n" />
<Policies>
<!-- 程序启动时检查;filePattern指定每天会生成新文件;超过100m生成新文件 -->
<OnStartupTriggeringPolicy/>
<TimeBasedTriggeringPolicy/>
<SizeBasedTriggeringPolicy size="100M"/>
</Policies>
<DefaultRolloverStrategy>
<!-- 日志文件仅保留近30天,并且最大5GB -->
<Delete basePath="/var/log/springboot/" maxDepth="1">
<IfFilename glob="spring-boot-start0-*.log">
<IfAny>
<IfLastModified age="30d"/>
<IfAccumulatedFileSize exceeds="5GB"/>
</IfAny>
</IfFilename>
</Delete>
</DefaultRolloverStrategy>
</RollingFile>
<!-- <CatLog4j2Appender name="Cat" />-->
</Appenders>
<Loggers>
<Root level="INFO">
<AppenderRef ref="Console" />
<AppenderRef ref="RollingFileInfo" />
<!-- <AppenderRef ref="Cat" />-->
</Root>
<Logger name="org.mybatis" level="INFO" />
<Logger name="org.springframework" level="INFO" />
<Logger name="com.ydfind.start" level="INFO" />
</Loggers>
</Configuration>
MainApplication.java
package com.ydfind.start;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@SpringBootApplication
@RestController
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
@GetMapping("/")
public String index() {
return "index";
}
}
测试
package com.ydfind.start.controller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@Slf4j
public class Log4jController {
@GetMapping("/log")
public String log() {
log.trace("log name = " + log.getName());
log.debug("log name = " + log.getName());
log.info("log name = " + log.getName());
log.warn("log name = " + log.getName());
log.error("log name = " + log.getName());
log.info("log name = " + log.getName());
return "success";
}
}
访问http://localhost:8182/log
结果如下