http://logback.qos.ch/manual/appenders.html#RollingFileAppender

1.基于时间的滚动策略

TimeBasedRollingPolicy

就好比一个小车,推着走。车身所压的时间就是要保留日志的时间。

<configuration>
<appender name="FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender"> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>${catalina.base}/logs/${CONTEXT_NAME}/%d{yyyy-MM-dd}/logFile.%d{yyyy-MM-dd}.log
</fileNamePattern>
<!-- keep 30 days' worth of history -->
<maxHistory>30</maxHistory>
</rollingPolicy> <encoder>
<pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n
</pattern>
</encoder>
</appender> <root level="DEBUG">
<appender-ref ref="FILE" />
</root>
</configuration>

2.基于大小和时间的文件命名和触发策略

http://logback.qos.ch/manual/appenders.html#SizeAndTimeBasedFNATP

FNATP means File Naming And Triggering Policy

达到最大值便压缩;可根据每天时间变化生成文件夹。

可以设置两个rolling :INFO 和 ERROR .

<configuration>
<appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- rollover daily -->
<fileNamePattern>${catalina.base}/logs/${CONTEXT_NAME}/%d{yyyy-MM-dd}/mylog-%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
<timeBasedFileNamingAndTriggeringPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<!-- or whenever the file size reaches 100MB -->
<maxFileSize>1mb</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<encoder>
<pattern>%msg%n</pattern>
</encoder>
</appender> <root level="DEBUG">
<appender-ref ref="ROLLING" />
</root> </configuration>

由以下代码可知,不加单位为byte, 单位只能加kb、mb、gb ,不区分大小写。

 if (unitStr.equalsIgnoreCase("")) {
coefficient = 1;
} else if (unitStr.equalsIgnoreCase("kb")) {
coefficient = KB_COEFFICIENT;
} else if (unitStr.equalsIgnoreCase("mb")) {
coefficient = MB_COEFFICIENT;
} else if (unitStr.equalsIgnoreCase("gb")) {
coefficient = GB_COEFFICIENT;
} else {
throw new IllegalStateException("Unexpected " + unitStr);
}
return new FileSize(lenValue * coefficient);

注:1、 2 策略不能混用,因为不能同时生效

-------------------- 20190606 补充 -----------

     <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- daily rollover -->
<fileNamePattern>D://data/fix.%d{yyyy-MM-dd-HH-mm}.%i.log.gz
</fileNamePattern>
<!-- 保留30(时间单位) -->
<maxHistory>30</maxHistory>
<!-- 单个文件最大 -->
<maxFileSize>20MB</maxFileSize>
<!-- 压缩后的fix文件总量,必须大于maxFileSize -->
<totalSizeCap>20MB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread]%-5level%logger{50} - %msg%n</pattern>
</encoder>
</appender>

https://logback.qos.ch/manual/appenders.html

    /**
* Given the FileNamePattern string, this method determines the compression
* mode depending on last letters of the fileNamePatternStr. Patterns ending
* with .gz imply GZIP compression, endings with '.zip' imply ZIP compression.
* Otherwise and by default, there is no compression.
*
*/
protected void determineCompressionMode() {
if (fileNamePatternStr.endsWith(".gz")) {
addInfo("Will use gz compression");
compressionMode = CompressionMode.GZ;
} else if (fileNamePatternStr.endsWith(".zip")) {
addInfo("Will use zip compression");
compressionMode = CompressionMode.ZIP;
} else {
addInfo("No compression will be used");
compressionMode = CompressionMode.NONE;
}
}

%d 按时间命名 i% 在之前基础上命名 以gz结尾就是gzip压缩

RollingFileAppender的更多相关文章

  1. 【转载】[C#]Log4net中的RollingFileAppender解析

    Log4日志组件的应用确实简单实用,在比较了企业库和Log4的日志功能后,个人觉得Log4的功能更加强大点.补充说明下,我使用的企业库是2.0版本,Log4net是1.2.1版本的. 在Log4net ...

  2. Log4net中的RollingFileAppender z

    Log4日志组件的应用确实简单实用,在比较了企业库和Log4的日志功能后,个人觉得Log4的功能更加强大点.补充说明下,我使用的企业库是2.0版本,Log4net是1.2.1版本的. 在Log4net ...

  3. log4j2教程【RollingFileAppender】

    说明 rollover 表示的是当日志文件大小满足指定大小后,就生成一个新的文件的过程. RollingFileAppender RollingFileAppender是一个OutputStreamA ...

  4. Log4j的扩展RollingFileAppender、DailyRollingFileAppender

    最常用的Appender--RollingFileAppender RollingFileAppender的一个Log4j配置样例: log4j.appender.R=org.apache.log4j ...

  5. Log4net(三)——RollingFileAppender配置

    RollingFileAppender配置 log4net的记录介质很多,这里只总结最常用的方式之一:RollingFileAppender. 1.日志文件名是以文件大小进行变换的 如果日志文件大小到 ...

  6. Log4j2 - Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFileAppender for element RollingFile

    问题与分析 在使用Log4j2时,虽然可以正确读取配置文件并生成log文件,但偶然发现控制台打印了异常信息如下: 2018-12-31 17:28:14,282 Log4j2-TF-19-Config ...

  7. 动态替换logback FileAppender/RollingFileAppender 配置- Programmatically configure logback FileAppender/RollingBackAppender

    一.本文实际解决的问题 如何在代码中修改logback的RollingFileAppender配置(本文代码实例为修改日志文件路径) 二.针对的场景: 本文解决的问题属于一个大需求的一部分,需求为:需 ...

  8. 删除N天前的log日志文件:RollingFileAppender,DailyRollingFileAppender,/etc/cron

    1. 如果您使用的是Log4j,且采用的RollingFileAppender方式, 通过设置maxBackupIndex属性来指定要保留的日志文件数的最大值可以间接实现删除N天前的日志文件. 2. ...

  9. Logback的AsyncAppender与RollingFileAppender流程解析

    近期工作中涉及到文件记录.文件翻转等操作,思考有没有成熟的代码以便参考. 因此,第一时间就联想到Logback的AsyncAppender以及RollingFileAppender. AsyncApp ...

随机推荐

  1. 关于Struts2配置文件名修改的问题

    突发奇想的想知道Struts2的配置文件名是否可以修改,自己最早使用Struts2的时候,只是单纯的将配置文件命名为“struts.xml”,这是Strut2默认的配置文件名,我一直也没有去修改它的命 ...

  2. MySql——查询题目练习

    本次查询我们基于这几张表查询 ***********查询练习********** 1. 查询Student表中的所有记录的Sname.Ssex和Class列. select sname,ssex,cl ...

  3. Autofac ASP.NET Web API (Beta) Integration

    With the beta release of ASP.NET MVC 4 and the ASP.NET Web API being released a few weeks ago, I dec ...

  4. TOTAL COMMAND自定义快捷键

  5. zabbix-3.2.1监控nginx-1.11.5

    声明参考地址:http://www.ttlsa.com/zabbix/zabbix-monitor-nginx-performance/ 1.zabbix需要监控nginx,则nginx需要配置ngx ...

  6. 第一个 Windows 界面程序

    编译器 使用的编译器为 Visual Studio 2017 菜单栏 -> 文件 -> 新建 -> 项目 选择 Windows 桌面应用程序,然后填好相关信息后点击“确定” 在解决方 ...

  7. 关于Trunk、Hybrid、Access、Tag、Untag、Pvid的关系

    一.相关定义 1.Trunk口  Trunk口上可以同时传送多个VLAN的包,一般用于交换机之间的链接. 2.Hybrid口 Hybrid口上可以同时传送多个VLAN的包,一般用于交换机之间的链接或交 ...

  8. Python Twisted系列教程20: Twisted和Erlang

    作者:dave@http://krondo.com/twisted-and-erlang/  译者: Cheng Luo 你可以从”第一部分 Twist理论基础“开始阅读:也可以从”Twisted 入 ...

  9. 12_java之构造方法|this|super

    01构造方法引入 * A:构造方法的引入 在开发中经常需要在创建对象的同时明确对象的属性值,比如员工入职公司就要明确他的姓名.年龄等属性信息. 那么,创建对象就要明确属性值,那怎么解决呢?也就是在创建 ...

  10. vertex shader(2)

    一次只有一个vertex shader是活跃的.你可以有多个vertex shader,如果一个物体特殊的变换或者灯光,你可以选择合适的vertex shader来完成这个任务. 你可能想使用vert ...