该节用于对《第三节》解读Logback的配置文件 内容的补充!
因为RollingFileAppender很常用,又相对复杂,所以单独一篇介绍,作为《第三节》的附录。
RollingFileAppender
该组件的属性包括file
、append
、encoder
、rollingPolicy
和triggeringPolicy
,其中rollingPolicy和triggeringPolicy必须同时存在,当然,如果有一个类同时继承了这两个接口,也是可以的。
file
、append
和encoder
不再介绍,参照《第三节》解读Logback的配置文件,主要对rollingPolicy
和triggeringPolicy
介绍。
rollingPolicy
接口:提供了文件移动或重命名等操作策略,负责干什么,有以下几个实现:triggeringPolicy
接口:负责什么时候执行操作,负责时机
实现组件
上述接口不能用来引用,所以官方提供了几个常用的实现组件,挨个介绍一下。
1. TimeBasedRollingPolicy
- 该实现很常用,主要使用场景:根据时间的推进不断创建日志文件。
- 实际上:
TimeBasedRollingPolicy
同时实现了rollingPolicy
和triggeringPolicy
接口,可以直接使用。 TimeBasedRollingPolicy
中日志滚动策略不是根据时钟触发的,而是在记录日志同时判断的,所以如果没有日志被记录,即使过了0点,可能也不会生成当天新的日志文件,什么时候有日志被记录什么时候生成。
属性 | 类型 | 描述 |
---|---|---|
file | String | 如果配置了<file> ,满足策略时,将新建一个<file> 文件,原来的<file> 文件被重命名为fileNamePattern 定义的规则文件,如1日写入log.log,2日把log.log重命名为1.log,并新建log.log继续写日志,即日志将永远写入<file> 指定的文件;否则日志不断写入到规则定义的新文件,如1日写入1.log,2日写入2.log,1.log成为历史文件。【建议省略该配置,防止文件占用时无法重命名】 |
fileNamePattern | String | (必须)使用%d{yyyy-MM} 格式指定文件名命名规则;如果存在多个%d{} ,只能有一个生效,其他需要标记为%d{yyyy-MM,aux} ;%d{} 如果省略{} ,%d 等价于%d{yyyy-MM-dd} |
maxHistory | int | (可选)最多保留多少日志文件 |
totalSizeCap | int | (可选)日志总容量(不是单个日志容量)上限,超限后删除最旧的日志;需要同时设置maxHistory ,且优先级比maxHistory 低 |
cleanHistoryOnStart | boolean | true:表示项目启动时执行删除策略;false:表示在日志滚动中执行删除策略(默认) |
fileNamePattern
中可以定义带有目录的命名规则,如/foo/%d{yyyy-MM,aux}/%d.log,/
和\
都可以作为路径分隔符。
如果希望