RollingFileAppender是Log4j2中的一種可以實現日誌文件滾動更新(rollover)的Appender。html
rollover的意思是當知足必定條件(如文件達到了指定的大小,達到了指定的時間)後,就重命名原日誌文件進行歸檔,並生成新的日誌文件用於log寫入。若是還設置了必定時間內容許歸檔的日誌文件的最大數量,將對過舊的日誌文件進行刪除操做。java
RollingFile實現日誌文件滾動更新,依賴於TriggeringPolicy和RolloverStrategy。正則表達式
其中,TriggeringPolicy爲觸發策略,其決定了什麼時候觸發日誌文件的rollover,即When。apache
RolloverStrategy爲滾動更新策略,其決定了當觸發了日誌文件的rollover時,如何進行文件的rollover,即How。api
Log4j2提供了默認的rollover策略DefaultRolloverStrategy。oracle
下面經過一個log4j2.xml文件配置簡單瞭解RollingFile的配置。app
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"warn"
>
<
Appenders
>
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%d{yyyy-MM-dd HH}.log"
>
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<
TimeBasedTriggeringPolicy
interval
=
"1"
/>
<
SizeBasedTriggeringPolicy
size
=
"250MB"
/>
</
Policies
>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"error"
>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
上述配置文件中配置了一個RollingFile,日誌寫入logs/app.log文件中,每通過1小時或者當文件大小到達250M時,按照app-2017-08-01 12.log的格式對app.log進行重命名並歸檔,並生成新的文件用於寫入log。測試
其中,fileName指定日誌文件的位置和文件名稱(若是文件或文件所在的目錄不存在,會建立文件。)spa
filePattern指定觸發rollover時,文件的重命名規則。filePattern中能夠指定相似於SimpleDateFormat中的date/time pattern,如yyyy-MM-dd HH,或者%i指定一個整數計數器。日誌
TimeBasedTriggeringPolicy指定了基於時間的觸發策略。
SizeBasedTriggeringPolicy指定了基於文件大小的觸發策略。
RollingFile的觸發rollover的策略有CronTriggeringPolicy(Cron表達式觸發)、OnStartupTriggeringPolicy(JVM啓動時觸發)、SizeBasedTriggeringPolicy(基於文件大小)、TimeBasedTriggeringPolicy(基於時間)、CompositeTriggeringPolicy(多個觸發策略的混合,如同時基於文件大小和時間)。
其中,SizeBasedTriggeringPolicy(基於日誌文件大小)、TimeBasedTriggeringPolicy(基於時間)或同時基於文件大小和時間的混合觸發策略最經常使用。
SizeBasedTriggeringPolicy規定了當日志文件達到了指定的size時,觸發rollover操做。size參數能夠用KB、MB、GB等作後綴來指定具體的字節數,如20MB。
<
SizeBasedTriggeringPolicy
size
=
"250MB"
/>
|
TimeBasedTriggeringPolicy規定了當日志文件名中的date/time pattern再也不符合filePattern中的date/time pattern時,觸發rollover操做。
好比,filePattern指定文件重命名規則爲app-%d{yyyy-MM-dd HH}.log,文件名爲app-2017-08-25 11.log,當時間達到2017年8月25日中午12點(2017-08-25 12),將觸發rollover操做。
參數名
|
類型
|
描述
|
---|---|---|
interval | integer | 此參數須要與filePattern結合使用,規定了觸發rollover的頻率,默認值爲1。假設interval爲4,若filePattern的date/time pattern的最小時間粒度爲小時(如yyyy-MM-dd HH),則每4小時觸發一次rollover;若filePattern的date/time pattern的最小時間粒度爲分鐘(如yyyy-MM-dd HH-mm),則每4分鐘觸發一次rollover。 |
modulate | boolean | 指明是否對interval進行調節,默認爲false。若modulate爲true,會以0爲開始對interval進行偏移計算。例如,最小時間粒度爲小時,當前爲3:00,interval爲4,則之後觸發rollover的時間依次爲4:00,8:00,12:00,16:00,...。 |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"warn"
name
=
"MyApp"
packages
=
""
>
<
Appenders
>
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%d{yyyy-MM-dd HH}-%i.log"
>
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<
TimeBasedTriggeringPolicy
/>
<
SizeBasedTriggeringPolicy
size
=
"250 MB"
/>
</
Policies
>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"error"
>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
上述配置文件中,filePattern中yyyy-MM-dd HH最小時間粒度爲小時,TimeBasedTriggeringPolicy中interval使用默認值1,將每1小時觸發一次rollover。
若將filePattern改成filePattern=「logs/app-%d{yyyy-MM-dd HH-mm}-%i.log」,yyyy-MM-dd HH-mm最小時間粒度爲分鐘,將每1分鐘觸發一次rollover。
將多個TriggeringPolicy放到Policies中表示使用複合策略
<
Policies
>
<
TimeBasedTriggeringPolicy
/>
<
SizeBasedTriggeringPolicy
size
=
"250 MB"
/>
</
Policies
>
|
如上,同時使用了TimeBasedTriggeringPolicy、SizeBasedTriggeringPolicy,有一個條件知足,就會觸發rollover。
DefaultRolloverStrategy指定了當觸發rollover時的默認策略。
DefaultRolloverStrategy是Log4j2提供的默認的rollover策略,即便在log4j2.xml中沒有顯式指明,也至關於爲RollingFile配置下添加了以下語句。DefaultRolloverStrategy默認的max爲7。
<
DefaultRolloverStrategy
max
=
"7"
/>
|
max參數指定了計數器的最大值。一旦計數器達到了最大值,過舊的文件將被刪除。
注意:不要認爲max參數是須要保留的日誌文件的最大數目。
max參數是與filePattern中的計數器%i配合起做用的,其具體做用方式與filePattern的配置密切相關。
1.若是filePattern中僅含有date/time pattern,每次rollover時,將用當前的日期和時間替換文件中的日期格式對文件進行重命名。max參數將不起做用。
如,filePattern="logs/app-%d{yyyy-MM-dd}.log"
2.若是filePattern中僅含有整數計數器(即%i),每次rollover時,文件重命名時的計數器將每次加1(初始值爲1),若達到max的值,將刪除舊的文件。
如,filePattern="logs/app-%i.log"
3.若是filePattern中既含有date/time pattern,又含有%i,每次rollover時,計數器將每次加1,若達到max的值,將刪除舊的文件,直到data/time pattern再也不符合,被替換爲當前的日期和時間,計數器再從1開始。
如,filePattern="logs/app-%d{yyyy-MM-dd HH-mm}-%i.log"
假設fileName爲logs/app.log,SizeBasedTriggeringPolicy的size爲10KB,DefaultRolloverStrategy的max爲3。
根據filePattern配置的不一樣分爲如下幾種狀況:
狀況1:filePattern中僅含有date/time pattern
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"trace"
name
=
"MyApp"
packages
=
""
>
<
Appenders
>
<
Console
name
=
"Console"
target
=
"SYSTEM_OUT"
>
<
PatternLayout
pattern
=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</
Console
>
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%d{yyyy-MM-dd}.log"
>
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<
SizeBasedTriggeringPolicy
size
=
"10KB"
/>
</
Policies
>
<
DefaultRolloverStrategy
max
=
"3"
/>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"trace"
>
<
AppenderRef
ref
=
"Console"
/>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
filePattern="logs/app-%d{yyyy-MM-dd}.log",指定當發生rollover時,將按照app-%d{yyyy-MM-dd}.log的格式對文件進行重命名。
每次觸發rollover時,將按照以下方式對文件進行rollover。
第X次rollover
|
當前用於寫入log的文件
|
歸檔的文件
|
描述
|
---|---|---|---|
0 | app.log | - | 全部的log都寫進app.log中。 |
1 | app.log | app-2017-08-17.log | 當app.log的size達到10KB,觸發第1次rollover,app.log被重命名爲app-2017-08-17.log。新的app.log被建立出來,用於寫入log。 |
2 | app.log | app-2017-08-17.log |
當app.log的size達到10KB,觸發第2次rollover,原來的app-2017-08-17.log將刪除。app.log被重命名爲app-2017-08-17.log。新的app.log文件被建立出來,用於寫入log。 |
狀況2:filePattern中僅含有整數計數器(%i)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"trace"
name
=
"MyApp"
packages
=
""
>
<
Appenders
>
<
Console
name
=
"Console"
target
=
"SYSTEM_OUT"
>
<
PatternLayout
pattern
=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</
Console
>
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%i.log"
>
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<
SizeBasedTriggeringPolicy
size
=
"10KB"
/>
</
Policies
>
<
DefaultRolloverStrategy
max
=
"3"
/>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"trace"
>
<
AppenderRef
ref
=
"Console"
/>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
filePattern="logs/app-%i.log",其他配置同上。
每次觸發rollover時,將按照以下方式對文件進行rollover。
第X次rollover
|
當前用於寫入log的文件
|
歸檔的文件
|
描述
|
---|---|---|---|
0 | app.log | - | 全部的log都寫進app.log中。 |
1 | app.log | app-1.log | 當app.log的size達到10KB,觸發第1次rollover,app.log被重命名爲app-1.log。新的app.log被建立出來,用於寫入log。 |
2 | app.log | app-1.log app-2.log |
當app.log的size達到10KB,觸發第2次rollover,app.log被重命名爲app-2.log。新的app.log被建立出來,用於寫入log。 |
3 | app.log | app-1.log app-2.log app-3.log |
當app.log的size達到10KB,觸發第3次rollover,app.log被重命名爲app-3.log。新的app.log被建立出來,用於寫入log。 |
4 | app.log | app-1.log app-2.log app-3.log |
當app.log的size達到10KB,觸發第4次rollover,app-1.log被刪除(即最初的、最舊的app.log)。app-2.log被重命名爲app-1.log,app-3.log被重命名爲app-2.log,app.log被重命名爲app-3.log。新的app.log被建立出來,用於寫入log。 |
狀況3:若是filePattern中既含有date/time pattern,又含有%i計數器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"trace"
name
=
"MyApp"
packages
=
""
>
<
Appenders
>
<
Console
name
=
"Console"
target
=
"SYSTEM_OUT"
>
<
PatternLayout
pattern
=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</
Console
>
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%d{yyyy-MM-dd HH-mm}-%i.log"
>
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<
TimeBasedTriggeringPolicy
/>
<
SizeBasedTriggeringPolicy
size
=
"10KB"
/>
</
Policies
>
<
DefaultRolloverStrategy
max
=
"3"
/>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"trace"
>
<
AppenderRef
ref
=
"Console"
/>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
filePattern="logs/app-%d{yyyy-MM-dd HH-mm}-%i.log",同時指定了TimeBasedTriggeringPolicy和SizeBasedTriggeringPolicy的觸發策略,每1分鐘或者文件大小達到10KB,將觸發rollover。
每次觸發rollover時,將按照以下方式對文件進行rollover。
第X次rollover
|
當前用於寫入log的文件
|
歸檔的文件
|
描述
|
---|---|---|---|
0 | app.log | - | 全部的log都寫進app.log中。 |
1 | app.log | app-2017-08-17 20-52-1.log | 當app.log的size達到10KB,觸發第1次rollover,app.log被重命名爲app-2017-08-17 20-52-1.log。新的app.log被建立出來,用於寫入log。 |
2 | app.log | app-2017-08-17 20-52-1.log app-2017-08-17 20-52-2.log |
當app.log的size達到10KB,觸發第2次rollover,app.log被重命名爲app-2017-08-17 20-52-2.log。新的app.log被建立出來,用於寫入log。 |
3 | app.log | app-2017-08-17 20-52-1.log app-2017-08-17 20-52-2.log app-2017-08-17 20-52-3.log |
當app.log的size達到10KB,觸發第3次rollover,app.log被重命名爲app-2017-08-17 20-52-3.log.log。新的app.log被建立出來,用於寫入log。 |
4 | app.log | app-2017-08-17 20-52-1.log app-2017-08-17 20-52-2.log app-2017-08-17 20-52-3.log |
當app.log的size達到10KB,觸發第4次rollover,因計數器的值到達max值,app-2017-08-17 20-52-1.log被刪除(即最初的、最舊的app.log)。app-2017-08-17 20-52-2.log被重命名爲app-2017-08-17 20-52-1.log,app-2017-08-17 20-52-3.log被重命名爲app-2017-08-17 20-52-2.log,app.log被重命名爲app-2017-08-17 20-52-3.log。新的app.log被建立出來,用於寫入log。 |
5 | app.log | app-2017-08-17 20-52-1.log app-2017-08-17 20-52-2.log app-2017-08-17 20-52-3.log |
當前時間變爲app-2017-08-17 20-53,觸發第5次rollover,app-2017-08-17 20-52-1.log被刪除。app-2017-08-17 20-52-2.log被重命名爲app-2017-08-17 20-52-1.log,app-2017-08-17 20-52-3.log被重命名爲app-2017-08-17 20-52-2.log,app.log被重命名爲app-2017-08-17 20-52-3.log。新的app.log被建立出來,用於寫入log。 |
6 | app.log | app-2017-08-17 20-52-1.log app-2017-08-17 20-52-2.log app-2017-08-17 20-52-3.log app-2017-08-17 20-53-1.log |
當app.log的size達到10KB,觸發第6次rollover,app.log被重命名爲app-2017-08-17 20-53-1.log。新的app.log被建立出來,用於寫入log。 |
總結:
1.max參數是與filePattern中的計數器%i配合起做用的,若filePattern爲filePattern="logs/app-%d{yyyy-MM-dd}.log">,因爲沒有設置%i計數器,max參數將不起做用。
2.max參數不是須要保留的文件的最大個數。如狀況3,日誌文件date/time pattern再也不符合filePattern時,計算器將被重置爲1,日誌總個數超過了max的指定值。
可認爲max參數規定了必定時間範圍內歸檔文件的最大個數。
DefaultRolloverStrategy制定了默認的rollover策略,經過max參數可控制必定時間範圍內歸檔的日誌文件的最大個數。
Log4j 2.5 引入了DeleteAction,使用戶能夠本身控制刪除哪些文件,而不只僅是經過DefaultRolloverStrategy的默認策略。
注意:經過DeleteAction能夠刪除任何文件,而不只僅像DefaultRolloverStrategy那樣,刪除最舊的文件,因此使用的時候須要謹慎!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"warn"
name
=
"MyApp"
packages
=
""
>
<
Properties
>
<
Property
name
=
"baseDir"
>logs</
Property
>
</
Properties
>
<
Appenders
>
<
RollingFile
name
=
"RollingFile"
fileName
=
"${baseDir}/app.log"
filePattern
=
"${baseDir}/app-%d{yyyy-MM-dd}.log.gz"
>
<
PatternLayout
pattern
=
"%d %p %c{1.} [%t] %m%n"
/>
<
CronTriggeringPolicy
schedule
=
"0 0 0 * * ?"
/>
<
DefaultRolloverStrategy
>
<
Delete
basePath
=
"${baseDir}"
maxDepth
=
"2"
>
<
IfFileName
glob
=
"*/app-*.log.gz"
/>
<
IfLastModified
age
=
"60d"
/>
</
Delete
>
</
DefaultRolloverStrategy
>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"error"
>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
上述配置文件中,Delete部分即是配置DeleteAction的刪除策略,指定了當觸發rollover時,刪除baseDir文件夾或其子文件下面的文件名符合app-*.log.gz且距離最後的修改日期超過60天的文件。
其中,basePath指定了掃描開始路徑,爲baseDir文件夾。maxDepth指定了目錄掃描深度,爲2表示掃描baseDir文件夾及其子文件夾。
IfFileName指定了文件名需知足的條件,IfLastModified指定了文件修改時間須要知足的條件。
DeleteAction經常使用參數以下:
public
class
HelloWorld {
public
static
void
main(String[] args) {
Logger logger = LogManager.getLogger(LogManager.ROOT_LOGGER_NAME);
try
{
//經過打印i,日誌文件中數字越小表明越老
for
(
int
i =
0
; i <
50000
; i++) {
logger.info(
"{}"
, i);
logger.info(
"logger.info\n"
);
Thread.sleep(
100
);
//爲了防止50000條很快跑完,sleep一段時間
}
}
catch
(InterruptedException e) {}
}
}
|
1.測試基於時間觸發
filePattern最小時間粒度爲秒,將每5秒觸發一次rollover
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"trace"
name
=
"MyApp"
packages
=
""
>
<
Appenders
>
<
Console
name
=
"Console"
target
=
"SYSTEM_OUT"
>
<
PatternLayout
pattern
=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</
Console
>
<!--<RollingFile name="RollingFile" fileName="logs/app.log"-->
<!--filePattern="logs/app-%d{yyyy-MM-dd HH}-%i.log">-->
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%d{yyyy-MM-dd HH-mm-ss}.log"
>
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<!--當通過了interval時間後,將根據filePattern對文件進行重命名,並生成新的文件用於日誌寫入-->
<
TimeBasedTriggeringPolicy
interval
=
"5"
/>
<!--當日志文件大小大於size時,將根據filepattern對文件進行重命名,並生成新的文件用於日誌寫入-->
<!--<SizeBasedTriggeringPolicy size="30KB"/>-->
</
Policies
>
<
DefaultRolloverStrategy
max
=
"3"
/>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"trace"
>
<
AppenderRef
ref
=
"Console"
/>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
2.測試基於文件大小的觸發
日誌文件達到5KB,將觸發rollover
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"trace"
name
=
"MyApp"
packages
=
""
>
<
Appenders
>
<
Console
name
=
"Console"
target
=
"SYSTEM_OUT"
>
<
PatternLayout
pattern
=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</
Console
>
<!--<RollingFile name="RollingFile" fileName="logs/app.log"-->
<!--filePattern="logs/app-%d{yyyy-MM-dd HH}-%i.log">-->
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%d{yyyy-MM-dd HH-mm-ss}.log"
>
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<!--當通過了interval時間後,將根據filePattern對文件進行重命名,並生成新的文件用於日誌寫入-->
<!--<TimeBasedTriggeringPolicy interval="5"/>-->
<!--當日志文件大小大於size時,將根據filepattern對文件進行重命名,並生成新的文件用於日誌寫入-->
<
SizeBasedTriggeringPolicy
size
=
"5KB"
/>
</
Policies
>
<
DefaultRolloverStrategy
max
=
"3"
/>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"trace"
>
<
AppenderRef
ref
=
"Console"
/>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
3.測試DefaultRolloverStrategy的max參數和%i計數器的搭配使用
注意filePattern最小時間粒度爲分鐘,且含%i計數器
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
Configuration
status
=
"trace"
name
=
"MyApp"
packages
=
""
>
<
Appenders
>
<
Console
name
=
"Console"
target
=
"SYSTEM_OUT"
>
<
PatternLayout
pattern
=
"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"
/>
</
Console
>
<
RollingFile
name
=
"RollingFile"
fileName
=
"logs/app.log"
filePattern
=
"logs/app-%d{yyyy-MM-dd HH-mm}-%i.log"
>
<!--<RollingFile name="RollingFile" fileName="logs/app.log"-->
<!--filePattern="logs/app-%d{yyyy-MM-dd HH-mm-ss}.log">-->
<
PatternLayout
>
<
Pattern
>%d %p %c{1.} [%t] %m%n</
Pattern
>
</
PatternLayout
>
<
Policies
>
<!--當通過了interval時間後,將根據filePattern對文件進行重命名,並生成新的文件用於日誌寫入-->
<!--<TimeBasedTriggeringPolicy interval="5"/>-->
<!--當日志文件大小大於size時,將根據filepattern對文件進行重命名,並生成新的文件用於日誌寫入-->
<
SizeBasedTriggeringPolicy
size
=
"5KB"
/>
</
Policies
>
<
DefaultRolloverStrategy
max
=
"3"
/>
</
RollingFile
>
</
Appenders
>
<
Loggers
>
<
Root
level
=
"trace"
>
<
AppenderRef
ref
=
"Console"
/>
<
AppenderRef
ref
=
"RollingFile"
/>
</
Root
>
</
Loggers
>
</
Configuration
>
|
http://logging.apache.org/log4j/2.x/manual/appenders.html RollingFileAppender部分