项目目录结构:lomback版本号1.18.10【lomback日期和大小轮询配置在1.1.7才出来的】
lomback配置文件:
关键点:
<!-- 循环政策:基于时间和大小政策创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 按日志大小分割一定要带:【%i】 -->
<FileNamePattern>${log.path}/${log.name}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件最大的大小 -->
<maxFileSize>1MB</maxFileSize>
<!--日志文件保留个数 -->
<!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个天滚动,且<maxHistory>是3,则只保存最近4天的文件,删除之前的旧文件。 -->
<MaxHistory>3</MaxHistory>
</rollingPolicy>
<?xml version="1.0" encoding="UTF-8"?>
<!-- 日志级别排序为: TRACE < DEBUG < INFO < WARN < ERROR 如果设置为WARN,则低于WARN的信息都不会输出 -->
<!-- scan:默认为true。作用:当设置为true时,如果配置文件发生改变,将会被重新加载。 -->
<!-- scanPeriod:默认时间间隔为1分钟,默认单位是毫秒,当scan为true时,此属性生效。作用:检测配置文件是否有修改时间间隔。 -->
<!-- debug:默认为false。作用:当此属性为true时,将打印出logback内部日志信息,实时查看logback运行状态。 -->
<configuration scan="true" scanPeriod="10 seconds">
<!-- contextName用来设置上下文名称。每个logger都关联到logger上下文,默认上下文名称为default。 -->
<contextName>dokit</contextName>
<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径 -->
<!-- 用来定义变量值,有两个属性name和value。 通过<property>定义的值被插入到logger上下文中,可以使"${}"来使用变量 -->
<property name="log.path" value="./log" />
<property name="log.name" value="dokit" />
<!--日志编码格式为 UTF-8 -->
<property name="log.charset" value="utf-8" />
<!--文件输出打印格式-->
<property name="log.patternFile" value="%contextName- %d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" />
<!-- 1、控制台输出 -->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<!--black 黑色 red 红色 green 绿色 highlight 高亮 boldMagenta 粗体 %d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符 -->
<pattern>%black(%contextName-) %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}) - %gray(%msg%n)</pattern>
<charset>${log.charset}</charset>
</encoder>
</appender>
<!-- 2、按照轮巡生成日志文件 -->
<appender name="LOG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${log.patternFile}</pattern>
<charset>${log.charset}</charset>
</encoder>
<!-- 循环政策:基于时间政策创建日志文件 -->
<!--<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!–日志文件输出的文件名 –>
<FileNamePattern>${log.path}/${log.name}.%d{yyyy-MM-dd}.log</FileNamePattern>
<!–日志文件保留天数 –>
<!– 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个月滚动,且<maxHistory>是6,则只保存最近6个月的文件,删除之前的旧文件。 –>
<MaxHistory>15</MaxHistory>
</rollingPolicy>-->
<!-- 循环政策:基于时间和大小政策创建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!--日志文件输出的文件名 按日志大小分割一定要带:【%i】 -->
<FileNamePattern>${log.path}/${log.name}.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<!--日志文件最大的大小 -->
<maxFileSize>1MB</maxFileSize>
<!--日志文件保留个数 -->
<!-- 可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。假设设置每个天滚动,且<maxHistory>是3,则只保存最近4天的文件,删除之前的旧文件。 -->
<MaxHistory>3</MaxHistory>
</rollingPolicy>
<!-- 此日志文档只记录INFO级别的 -->
<!-- LevelFilter: 等级过滤器。当日志级别等于或高于该等级时,过滤器返回NEUTRAL;当日志级别低于临界值时,日志会被拒绝。 -->
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>INFO</level>
</filter>
</appender>
<!-- 2.1 level为ERROR日志,时间和大小滚动输出 -->
<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${log.patternFile}</pattern>
<charset>${log.charset}</charset>
</encoder>
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<FileNamePattern>${log.path}/${log.name}-error.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
<maxFileSize>1MB</maxFileSize>
<MaxHistory>3</MaxHistory>
</rollingPolicy>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<level>ERROR</level>
<onMatch>ACCEPT</onMatch>
<onMismatch>DENY</onMismatch>
</filter>
</appender>
<!-- 3、日志输出 -->
<!-- 3.1开发环境:INFO打印到控制台,ERROR日志生成文件 -->
<!--<root level="INFO">
<appender-ref ref="CONSOLE" />
<appender-ref ref="ERROR_FILE" />
</root>-->
<!-- 3.2生产环境:INFO和ERROR日志生成文件;DEBUG文件生成同理 -->
<root level="INFO">
<appender-ref ref="LOG_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
</configuration>
通过修改计算机系统时间测试结果展示:
当天日志超过1MB时,会自动生成 fileName.i+1.log
且轮巡4天后,之前的fileName.*.log日志清除,
备注:如果当天没有日志生成,则保留有日志生成的4天日志,比如上例的dokit-error日志文件
参考案例:
https://blog.csdn.net/weixin_34392435/article/details/92543605?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-2.nonecase logback 按时间和大小生成日志不生效的问题
等等