1.依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 排除自带的logback依赖 -->
<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</artifactId>
<exclusions>
<exclusion> <!-- 排除自带的logback依赖 -->
<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><!--log4j2异步支持-->
<groupId>com.lmax</groupId>
<artifactId>disruptor</artifactId>
<version>3.3.6</version>
</dependency>
2.配置文件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="patternLayout">%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level [%logger{50}:%L] [%X{X-B3-TraceId},%X{X-B3-SpanId}] - %msg%n</Property>
<Property name="logdir">D:/wwwww</Property>
</Properties>
<Appenders>
<Console name="console" target="SYSTEM_OUT">
<PatternLayout pattern="${patternLayout}"/>
</Console>
<RollingFile name="DebugLogger" fileName="${logdir}/logs/debug/log.log"
filePattern="${logdir}/logs/debug/%d{yyyy-MM-dd-HH}.log.gz" append="true">
<PatternLayout pattern="${patternLayout}"/>
<DefaultRolloverStrategy ><!--日志清楚策略,清除指定目录下指定文件名指定时间修改时间内的日志-->
<Delete basePath="${logdir}/logs/debug" maxDepth="2">
<IfFileName glob="*.log" />
<IfLastModified age="48h" />
</Delete>
</DefaultRolloverStrategy>
<Policies><!--日志滚动策略,常用的根据文件大小,根据时间滚动-->
<!--注意:滚动周期是根据filePattern的日期格式化参数精度来的,如下interval="1"每小时切换新的日志文件-->
<!-- <TimeBasedTriggeringPolicy modulate="true" interval="1"/>-->
<SizeBasedTriggeringPolicy size="1 MB"/>
</Policies>
</RollingFile>
<!--此处省略其他几个个级别的RollingFile类型的appender InfoLogger ErrorLogger-->
<!--除了console,RollingFile这些常用的appender,还有socket,kafka,jms,nosql,jdbc,SMTP,flume等-->
<!--ELK日志收集,也可通过filebeat完成-->
<Socket name="Logstash" host="192.168.199.128" port="4560" protocol="TCP">
<PatternLayout>${patternLayout}</PatternLayout>
</Socket>
</Appenders>
<loggers>
<AsyncLogger name="springfox" level="OFF"/> <!--swagger2日志输出为关闭级别-->
<AsyncRoot level="INFO"> <!--异步模式<AsyncRoot>需要依赖jar包disruptor,同步模式<root/>-->
<appender-ref ref="DebugLogger" level ="debug" />
<appender-ref ref="InfoLogger" level="info"/>
<appender-ref ref="ErrorLogger" level="error"/><!--比AsyncRoot的级别低,输出的日志级别是error-->
<appender-ref ref="Logstash" level="info"/> <!--日志输出到logstash-->
</AsyncRoot>
</loggers>
</Configuration>