Springboot + log4j
pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.1.6.RELEASE</version> <!-- 去掉springboot默认配置 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency>
application.yml
logging: config: classpath:log4j2.xml
Test.java
private final Logger logger = LogManager.getLogger(this.getClass());// public static final Logger LOGGER = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);@GetMapping("/log")@ResponseBodypublic String logTest(){ for(int i=0;i<10;i++){ logger.info("info message"); logger.warn("warn message"); logger.error("error message"); } return "My First SpringBoot Application";}
log4j2.xml
<!-- log4j2.xml --><?xml version="1.0" encoding="UTF-8"?><configuration status="warn"> <Properties> <!-- 日志存储路径 --> <Property name="baseDir">./logs</Property> </Properties> <Appenders> <Console name="console" target="SYSTEM_OUT"> <PatternLayout charset="UTF-8" pattern="[%-5p] [%d{HH:mm:ss}] %c - %m%n" /> </Console> <!--Info级别日志输出--> <RollingFile name="system-info" fileName="${baseDir}/info.log" filePattern="${baseDir}/$${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="warn" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="info"/> </Filters> <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][日志系统][%l]%n%m%n" /> <Policies> <!-- 归档每天的文件 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制单个文件大小 --> <SizeBasedTriggeringPolicy size="10 MB" /> </Policies> <!-- 限制每天文件个数 --> <DefaultRolloverStrategy compressionLevel="0" max="50"/> </RollingFile> <!-- WARN 级别日志输出--> <RollingFile name="system-warn" fileName="${baseDir}/warn.log" filePattern="${baseDir}/$${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="error" onMatch="DENY" onMismatch="NEUTRAL"/> <ThresholdFilter level="warn"/> </Filters> <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][日志系统][%l]%n%m%n" /> <Policies> <!-- 归档每天的文件 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制单个文件大小 --> <SizeBasedTriggeringPolicy size="10 MB" /> </Policies> <!-- 限制每天文件个数 --> <DefaultRolloverStrategy compressionLevel="0" max="50"/> </RollingFile> <!--Error级别日志输出--> <RollingFile name="system-error" fileName="${baseDir}/error.log" filePattern="${baseDir}/$${date:yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz"> <Filters> <ThresholdFilter level="error"/> </Filters> <PatternLayout charset="UTF-8" pattern="[%d{yyyy/MM/dd HH:mm:ssSSS}][%p][日志系统][%l]%n%m%n" /> <Policies> <!-- 归档每天的文件 --> <TimeBasedTriggeringPolicy interval="1" modulate="true" /> <!-- 限制单个文件大小 --> <SizeBasedTriggeringPolicy size="10 MB" /> </Policies> <!-- 限制每天文件个数 --> <DefaultRolloverStrategy compressionLevel="0" max="50"/> </RollingFile> </Appenders> <Loggers> <root level="INFO"> <appender-ref ref="console" /> <appender-ref ref="system-info" /> <appender-ref ref="system-warn" /> <appender-ref ref="system-error" /> </root> </Loggers></configuration>