目录
开端:
经理有个要求 就是日志30天要清除 然后呢不能太乱了
遇到困难: 那个logback-spring.xml 不可以直接根据不同服务器 匹配不同路径生成文件夹
原来的看的不满意 说按天生成文件夹 展示出来
成果展示:
注意点: 当天的不会建立文件夹 隔天会把昨天的放进文件夹里面
配置:
logback-spring.xml配置
${LOG_HOME}为替换的内容啦
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
<!-- 指定日志文件存放目录 动态生成 -->
<define name="LOG_HOME" class="com.yqs.config.log.LogHomeProperty" />
<!--控制台输出-->
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!-- 彩色日志 -->
<pattern>%red(%date{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %red([%thread]) %boldMagenta(%logger{50}) %cyan(%msg%n)</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="FILE_INFO" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/service.log</file>
<!-- 日志滚动策略 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 归档文件 -->
<fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd,aux}/service.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 单个日志文件最多 20MB -->
<maxFileSize>20MB</maxFileSize>
<!-- 总日志文件最多 1G -->
<totalSizeCap>1GB</totalSizeCap>
<!-- 30天的日志周期,超出数量就删除旧文件 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${LOG_HOME}/error.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 归档文件 -->
<fileNamePattern>${LOG_HOME}/%d{yyyy-MM-dd,aux}/error.%d{yyyy-MM-dd}.%i.log</fileNamePattern>
<!-- 单个日志文件最多 20MB -->
<maxFileSize>20MB</maxFileSize>
<!-- 总日志文件最多 1G -->
<totalSizeCap>1GB</totalSizeCap>
<!-- 30天的日志周期,超出数量就删除旧文件 -->
<MaxHistory>30</MaxHistory>
</rollingPolicy>
<!-- 过滤日志 -->
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50}[%L] - %msg%n</pattern>
<charset>UTF-8</charset>
</encoder>
</appender>
<logger name="org.apache.ibatis" level="DEBUG">
<appender-ref ref="STDOUT"/>
</logger>
<logger name="java.sql" level="DEBUG">
<appender-ref ref="STDOUT"/>
</logger>
<root level="INFO">
<appender-ref ref="STDOUT" />
<appender-ref ref="FILE_INFO" />
<appender-ref ref="FILE_ERROR" />
</root>
</configuration>
然后就是动态路径配置
/**
* @Description 定义logback 日志动态更新目录结构
* @Author 小乌龟
* @Date 2022/4/6 20:19
*/
public class LogHomeProperty extends PropertyDefinerBase {
//目录结构 根据工作的当前目录来创建
private static final String LOG_HOME =System.getProperty("user.dir") +"/logs";
@Override
public String getPropertyValue() {
return LOG_HOME;
}
}