![](/img/trans.png)
[英]How to get “max” attribute value of DefaultRolloverStrategy in log4j2 in Java
[英]How does Log4j2 DefaultRolloverStrategy's max attribute really work?
我已經配置了僅使用OnStartupTriggeringPolicy
設置的RollingRandomAccessFileAppender
,但是當我將DefaultRolloverStrategy
的max屬性設置為某個數字時,日志會無限期地繼續生成該數量。
這是我的log4j2.xml :
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<RollingRandomAccessFile
name="RollingRAF"
fileName="logs/app.log"
filePattern="logs/app-%d{dd-MMM-yyyy@HH.mm.ss}.log">
<PatternLayout>
<Pattern>%d %p %c{1.} %m%n</Pattern>
</PatternLayout>
<Policies>
<OnStartupTriggeringPolicy />
</Policies>
<DefaultRolloverStrategy max="5"/>
</RollingRandomAccessFile>
</Appenders>
<Loggers>
<Logger name="myLogger" level="warn">
<AppenderRef ref="RollingRAF"/>
</Logger>
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
是因為我的名字模式中沒有迭代器嗎?
是因為我的文件名精度設置為秒?
是因為我只設置了OnStartupTriggeringPolicy
嗎?
或者這里發生了什么?
我的目標是設置滾動配置,記錄最近5次應用程序運行。
如果指定了TimeBasedTriggeringPolicy,則DefaultRolloverStrategy將使用filePattern中指定的日期模式。 要使用max
屬性,請在filePattern中指定%i
模式,並將<SizeBasedTriggeringPolicy size="20 MB" />
到翻轉策略。 (當然還是其他一些尺寸。)
然后, <DefaultRolloverStrategy max="5"/>
的值將確保在相同的翻轉期內(因為您指定了日期模式% %d{dd-MMM-yyyy@HH.mm.ss}
, %d{dd-MMM-yyyy@HH.mm.ss}
您需要一%d{dd-MMM-yyyy@HH.mm.ss}
)觸發基於大小的翻轉時,不會創建超過5個文件。
如果您的翻轉窗口較長,如每天滾動到新文件夾,並且在該文件夾中,請確保創建的最大大小= 20 MB的文件不超過5個,這樣更有用。
更新:
Log4j 2.5添加了配置自定義刪除操作的功能 。 開箱即用,您可以根據年齡,計數或占用的磁盤空間(累積文件大小)刪除文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.