slf4j: 日志门面
log4j2: 日志实现
我要是直接用log4j2打日志当然可以,但是我想换的时候,就需要修改很多代码.
比如说导入的日志类啊,logger的声明啊等等.
但是我可以让slf4j来做,slf4j是多个日志框架的上层,大家都基于slf4j来做.
这样,要切换具体的日志框架时,只用换个依赖那些就好了, 代码之类的不用任何修改.
<!-- log4j2依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
默认的是logback,需要在pom中排除掉这个默认的.
网上说的排spring-boot-starter-web,试了不行.此处排的是spring-boot-starter中的.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<!-- 20210714去掉logback配置 -->
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
<!-- 20210714去掉logback配置 end -->
<exclusion>
<artifactId>logback-classic</artifactId>
<groupId>ch.qos.logback</groupId>
</exclusion>
</exclusions>
</dependency>
放到项目的resources目录下即可.
文件名:log4j2.xml
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- 参数声明 -->
<Properties>
<property name="LOG_PATTERN"
value="%d{yyyy-MM-dd HH:mm:ss.SSS} -- %style{[%t]}{bright,magenta} %highlight{%-5level}{ERROR=Bright RED, WARN=Bright Yellow, INFO=Bright Green, DEBUG=Bright Cyan, TRACE=Bright White} %logger{36}.%M - %msg%n"/>
<!-- ./当前路径 此处为项目根路径-->
<!-- debug 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
<property name="DEBUG_FILE_PATH_ING" value="./logs/debug.log"/>
<property name="DEBUG_FILE_PATH_ED" value="./logs/debug-%d{yyyy-MM-dd}.%i.log"/>
<!-- info 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
<property name="INFO_FILE_PATH_ING" value="./logs/info.log"/>
<property name="INFO_FILE_PATH_ED" value="./logs/info-%d{yyyy-MM-dd}.%i.log"/>
<!-- error 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
<property name="ERROR_FILE_PATH_ING" value="./logs/error.log"/>
<property name="ERROR_FILE_PATH_ED" value="./logs/error-%d{yyyy-MM-dd}.%i.log"/>
<!-- warn 日志文件位置及名称,在rollFile的时候老文件的生成规则 -->
<property name="WARN_FILE_PATH_ING" value="./logs/warn_error.log"/>
<property name="WARN_FILE_PATH_ED" value="./logs/warn_error-%d{yyyy-MM-dd}.%i.log"/>
<!-- 日志文件最大文件大小全局配置,一天之内最大文件产生数量全局配置 -->
<property name="MAX_FILE_SIZE" value="100MB"/>
<property name="MAX_FILE_NUM" value="30"/>
</Properties>
<appenders>
<!-- 控制台输出日志信息 -->
<console name="Console_Log" target="SYSTEM_OUT">
<PatternLayout pattern="${LOG_PATTERN}"/>
</console>
<!-- debug日志文件输出日志信息 -->
<RollingFile name="Debug_File" fileName="${DEBUG_FILE_PATH_ING}" filePattern="${DEBUG_FILE_PATH_ED}">
<ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
</RollingFile>
<!-- info日志文件输出日志信息 -->
<RollingFile name="Info_File" fileName="${INFO_FILE_PATH_ING}" filePattern="${INFO_FILE_PATH_ED}">
<ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
</RollingFile>
<!-- warn日志文件输出日志信息 -->
<RollingFile name="Warn_File" fileName="${ERROR_FILE_PATH_ING}" filePattern="${ERROR_FILE_PATH_ED}">
<ThresholdFilter level="WARN" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
</RollingFile>
<!-- error日志文件输出日志信息 -->
<RollingFile name="Error_File" fileName="${ERROR_FILE_PATH_ING}" filePattern="${ERROR_FILE_PATH_ED}">
<ThresholdFilter level="ERROR" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="${LOG_PATTERN}"/>
<Policies>
<SizeBasedTriggeringPolicy size="${MAX_FILE_SIZE}"/>
<TimeBasedTriggeringPolicy/>
</Policies>
<DefaultRolloverStrategy max="${MAX_FILE_NUM}"/>
</RollingFile>
</appenders>
<!--配置总的日志监听级别-->
<loggers>
<root level="DEBUG">
<appender-ref ref="Console_Log"/>
<appender-ref ref="Debug_File"/>
<appender-ref ref="Info_File"/>
<appender-ref ref="Error_File"/>
</root>
</loggers>
</configuration>
类上面加注解@Slf4j
// info
log.info("请求地址: "+ request.getRequestURI());
// 占位符的使用{}
log.info("<< | {} | 返回给调用方的响应的报文:\n {}", msgId, JSON.toJSONString(sxResponse));
// << | msgId | 返回给调用方的响应的报文:\n JSON.toJSONString(sxResponse)", msgId, JSON.toJSONString(sxResponse)
原文:https://www.cnblogs.com/yang37/p/15031880.html