需要用日志的形式记录信息,到了学习日志的时机了,哈哈。
应用:如果用户数据丢失,可以从记录中的数据找回
1、在一个建好的Spring boot小项目里,pom.xml引入包log4j2
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
2、引入之后就会报错,需排除Spring boot自带的日志,如果不清楚哪些包自带logging ,用命令查找 mvn dependency:tree
一个个找,如果项目比较复杂,可以使用全局排除 spring-boot-starter-logging,文章如下
https://blog.csdn.net/u013314786/article/details/90412733
<!--全局排除spring-boot-starter-logging内的所有依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
3、开始配置
1.在application.yml 添加配置
logging:
config: classpath:log4j2.xml
2.在src/resources文件下,创建log4j2.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Configuration后面的status,这个用于设置log4j2自身内部的信息输出,可以不设置,当设置成trace时,
你会看到log4j2内部各种详细输出。可以设置成OFF(关闭)或Error(只输出错误信息)
-->
<Configuration status="WARN" monitorInterval="30">
<Properties>
<Property name="App">play</Property>
<Property name="logDir">logs</Property>
<Property name="splitSize">30 MB</Property>
<Property name="cdr-directory-send">logs/REPORT/send
</Property>
<Property name="cdr-directory-buffer">logs/REPORT/buffer
</Property>
</Properties>
<Appenders>
<!-- 输出控制台日志的配置 -->
<Console name="Console" target="SYSTEM_OUT">
<!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)-->
<!-- 输出日志的格式 -->
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingFile name="Play"
fileName="${logDir}/play.log"
filePattern="%d{yy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n">
<PatternLayout pattern="d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
<Policies>
<CronTriggeringPolicy schedule="* */5 * * * ?" />
<!--<TimeBasedTriggeringPolicy interval="1"/>-->
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingFile>
<RollingFile name="PTB72-cdr"
fileName="${cdr-directory-buffer}/TMP_72_NEWARCH_ASYN_KAFKA_CDR"
filePattern="${cdr-directory-send}/PTB72%d{yyyyMMddHHmm}0000-%i.txt">
<ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
<PatternLayout pattern="%m%n"/>
<Policies>
<CronTriggeringPolicy schedule="* */5 * * * ?" />
<!--<TimeBasedTriggeringPolicy interval="1"/>-->
<SizeBasedTriggeringPolicy size="10MB"/>
</Policies>
</RollingFile>
</Appenders>
<Loggers>
<!-- root logger 配置,全局配置,默认所有的Logger都继承此配置 -->
<!-- AsyncRoot - 异步记录日志 - 需要LMAX Disruptor的支持 -->
<Root level="all">
<AppenderRef ref="Console"/>
<AppenderRef ref="Play"/>
</Root>
<Logger name="PTB72" level="info" additivity="false">
<appender-ref ref="PTB72-cdr"/>
</Logger>
</Loggers>
</Configuration>
添加日志级别,日志显示就会有筛选。
<Loggers>
<!-- root logger 配置,全局配置,默认所有的Logger都继承此配置 -->
<!-- AsyncRoot - 异步记录日志 - 需要LMAX Disruptor的支持 -->
<Root level="all">
<AppenderRef ref="Console"/>
<AppenderRef ref="Play" level="info"/>
</Root>
<Logger name="7222" level="info" additivity="false">
<appender-ref ref="7222-cdr" level="error"/>
</Logger>
</Loggers>
日志就是自己保存的数据了
小总结
日志不显示,设置了error级别,数据却输入info类型
RollingFile和File之间的区别......
小例子可以下载
https://download.csdn.net/download/qq_34735938/13108064
参考博客
https://blog.csdn.net/cnwyt/article/details/79298423
https://blog.csdn.net/u013314786/article/details/90412733
https://www.cnblogs.com/songxingzhu/p/8867817.html