diff --git a/spring/logback/logback.md b/spring/logback/logback.md
index d57525e..73c7633 100644
--- a/spring/logback/logback.md
+++ b/spring/logback/logback.md
@@ -571,3 +571,152 @@ timestamp元素接收两个必填属性,`key`和`datePattern`,并接收一
- timeReference : 默认情况下,timestamp元素的值为当前配置文件被解析的事件,也可以将其设为`contextBirth`,即context创建时间
#### RollingFileAppender
+`RollingFileAppender`继承了FileAppender,并且支持了滚动日志的能力。RollgingAppender拥有如下子组件:
+- `RollingPolicy`:负责如何执行日志滚动操作
+- `TriggeringPolicy`:负责决定是否/何时出发日志滚动
+
+RollingFileAppender同时需要RollingPolicy和TriggerPolicy组件,但是如果RollingPolicy实现了TriggerPolicy接口,那么只需要RollingPolicy即可。
+
+如下是RollingFileAppender的属性:
+- file: 值为String类型,如果日志只被写到RollingPolicy指定的目标设备,那么file属性可以为空
+- append:是否追加
+- encoder:同FileOutputStream
+- rollingPolicy:值为`RollingPolicy`类型
+- triggeringPolicy:值为`TriggeringPolicy`类型
+- prudent
+
+##### RollingPolicy
+`RollingPolicy`负责日志滚动过程,其中涉及文件移动和重命名。
+
+RollingPolicy接口展示如下:
+```java
+package ch.qos.logback.core.rolling;
+
+import ch.qos.logback.core.FileAppender;
+import ch.qos.logback.core.spi.LifeCycle;
+
+public interface RollingPolicy extends LifeCycle {
+
+ public void rollover() throws RolloverFailure;
+ public String getActiveFileName();
+ public CompressionMode getCompressionMode();
+ public void setParent(FileAppender appender);
+}
+```
+其中,各方法代表含义如下:
+- rollober: 将当前日志文件归档
+- getActiveFileName:计算当前日志文件的文件名(实时日志将会被写入到其中)
+- getCompressionMode: 决定压缩模式
+- setParent:设置关联的FileAppender
+
+##### TimeBasedRollingPolicy
+TimeBasedRollingPolicy是最常用的rollingPolicy,其基于时间来执行滚动操作,可以通过其设置按天或按月滚动。
+
+TimeBasedRollingPolicy同时实现了RollingPolicy和TriggeringPolicy接口。
+
+TimeBasedRollingPolicy接收一个必填的`fileNamePattern`参数,并且拥有可选填参数:
+- `fileNamePattern`: 该属性定义了已经被滚动(已被归档)文件的文件名,该属性的应该含有文件名,并且在适当位置加上`%d转换说明符`(%d{yyyy-MM-dd})。
+ > ##### %d转换说明符
+ > %d转换说明符包含一个date-and-time格式的字符串,该格式和SimpleDateFormat相同。如果该date-and-time被省略,那么默认为yyyy-MM-dd.
+ >
+ > 可以在fileNamePattern中含有多个%d转换说明符,但是只能有一个`主%d转换说明符`,主%d转换说明符用于推断滚动周期。其他说有的%d转换说明符都需要通过`aux`来进行修饰(`%d{yyyy/MM, aux}`)。
+ >
+ > 示例如下
+ >
+ > `/var/log/%d{yyyy/MM, aux}/myapplication.%d{yyyy-MM-dd}.log`.
+
+ 滚动周期的值将会从date-and-time表达式来推断。
+
+ RollingFileAppender中,file属性可以被省略或设置为null。如果为RollingFileAppender设置了file属性,那么可以解耦当前日志和已经被归档的日志。如果file属性的值,那么当前日志路径就是file文件的值,此时当前日志的路径不会随着日期的变动而改变。
+
+ 但是,在省略file属性的情形下,那么当前日志文件路径将会根据fileNamePattern来计算
+
+- `maxHistory`: `maxHistory`指定了保留归档日志的最大数量,会对旧日志进行异步删除。
+
+ 如果将maxHistory设置为0,将会禁用旧日志删除。默认情况下,maxHistory被设置为0。
+
+- `totalSizeCap`:`totalSizeCap`控制了所有归档日志文件的最大大小,当最大小超过阈值时,最老的文件将会被删除。`totalSizeCap`需要`maxHistory`属性也被设置,通常,totalSizeCap都在maxHistory之后被应用。
+
+默认情况下,totalSizeCap被设置为0,代表不会有总大小的阈值限制。
+
+- `cleanHistoryOnStart`:如果该属性被设置为true,当appender启动时归档日志将会被清除。
+
+TimeBasedRollingPolicy支持文件自动压缩,如果`fileNamePattern`后缀以`.gz`或`.zip`结尾,文件压缩将会自动被应用。
+
+示例如下
+```
+/wombat/foo.%d.gz
+```
+上述示例当前日志被输出到`/wombat/foo.yyyy-MM-dd`文件中,但是在第二天触发归档后,文件将会被压缩到`/wombat/foo.yyyy-MM-dd.gz`中。
+
+
+TimeBasedRollingPolicy示例如下:
+```xml
+
+
+ logFile.log
+
+
+ logFile.%d{yyyy-MM-dd}.log
+
+
+ 30
+ 3GB
+
+
+
+
+ %-4relative [%thread] %-5level %logger{35} -%kvp- %msg%n
+
+
+
+
+
+
+
+```
+
+#### SizeAndTimeBasedRollingPolicy
+SizeAndTimeBasedRollingPolicy支持配置单个日志文件的最大大小,其除了支持%d转换符外,还支持%i转换符,%i转换符也是必填的。每当当前日志文件达到最大文件大小时,其都会递增`%i`序列号,并且旧日志文件将会被归档。序列号从0开始。
+
+SizeAndTimeBasedRollingPolicy还包含如下属性:
+- `maxFileSize`:每当当前日志文件达到`maxFileSize`指定的大小时,其都会递增序列号,序列号默认为0.
+
+ maxFileSize为FileSize类型,可以通过`KB, MB, GB`等单位来指定。
+
+- `checkIncrement`:检查当前日志文大小的间隔时间,默认为60s
+
+```xml
+
+
+ mylog.txt
+
+
+ mylog-%d{yyyy-MM-dd}.%i.txt
+
+ 100MB
+ 60
+ 20GB
+
+
+ %msg%n
+
+
+
+
+
+
+
+
+
+```
+
+#### Encoder
+通常,PatternLayoutEncoder,其pattern可以指定为如下形式:
+```xml
+
+
+ %d{dd-MM-yyyy HH:mm:ss.SSS} [%thread] %-5level %logger{36}.%M - %msg%n
+
+
+```