在bom中统一管理日志版本(这个配置要放在第一位)
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-bom</artifactId>
<version>${log4j.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
项目中使用log4j2
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>spring-boot-starter-logging</artifactId>
<groupId>org.springframework.boot</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
log4j2配置
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="off" monitorInterval="10" packages="org.apache.logging.log4j.core,io.sentry.log4j2">
<properties>
<property name="LOG_HOME">/data/logs/${env:logName}</property>
<property name="COMMON_FILE_NAME">${env:logName}</property>
<property name="MAX_FILE_SIZE" value="500MB"></property>
<property name="MAX_FILE_COUNT" value="5"></property>
<Property name="FILE_LOG_PATTERN"
value="%date{yyyy-MM-dd HH:mm:ss.SSS} [%traceId] %level [%thread][%file:%line] - %msg%n"></Property>
</properties>
<Appenders>
<Sentry name="Sentry"/>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%date{yyyy-MM-dd HH:mm:ss.SSS} [%traceId] %level [%thread][%file:%line] - %msg%n"/>
<ThresholdFilter level="info" onMatch="ACCEPT"
onMismatch="DENY"/>
</Console>
<RollingRandomAccessFile name="FILE-INFO" fileName="${LOG_HOME}/${COMMON_FILE_NAME}-info.log"
filePattern="${LOG_HOME}/%date{yyyy-MM-dd}/${COMMON_FILE_NAME}-%i-info.log">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${FILE_LOG_PATTERN}" charset="UTF-8"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
</Policies>
<DefaultRolloverStrategy max="${MAX_FILE_COUNT}"/>
</RollingRandomAccessFile>
<RollingRandomAccessFile name="FILE-ERROR" fileName="${LOG_HOME}/${COMMON_FILE_NAME}-error.log"
filePattern="${LOG_HOME}/%date{yyyy-MM-dd}/${COMMON_FILE_NAME}-%i-error.log">
<ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${FILE_LOG_PATTERN}" charset="UTF-8"/>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
<SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
</Policies>
<DefaultRolloverStrategy max="${MAX_FILE_COUNT}"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<AsyncRoot level="info" includeLocation="true">
<AppenderRef ref="Console"/>
<AppenderRef ref="FILE-INFO"/>
<AppenderRef ref="FILE-ERROR"/>
<AppenderRef ref="Sentry" level="WARN"/>
</AsyncRoot>
</Loggers>
</Configuration>
${env:logName} 代表从环境变量中获取值
这里看log4j2支持的动态获取方式

