簡體   English   中英

Log4j2 DefaultRolloverStrategy的max屬性如何真正起作用?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM