Log4j2的DefaultRolloverStrategy详解

[Q&A] 什么是 DefaultRolloverStrategy?

当触发器(例如SizeBasedTriggeringPolicyTimeBasedTriggeringPolicy)决定需要进行日志文件滚动时,DefaultRolloverStrategy将负责处理滚动过程中的具体行为。

<RollingFile name="api_json"
             fileName="${LOG_HOME}/${FILE_NAME}.log"
             filePattern="${LOG_HOME}/${FILE_NAME}_%d{yyyy-MM-dd-HH}_%i.log.gz"
             createOnDemand="true">
    <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/>
    <PatternLayout pattern="${LOG_PATTERN}"/>
    <Policies>
        <SizeBasedTriggeringPolicy size="100K"/>
    </Policies>

    <DefaultRolloverStrategy fileIndex="nomax">
        <Delete basePath="${LOG_HOME}" maxDepth="2">
            <IfFileName glob="*.log.gz">
                <IfAny>
                    <IfAccumulatedFileSize exceeds="100M"/>
                    <IfAccumulatedFileCount exceeds="100"/>
                    <IfLastModified age="30d"/>
                </IfAny>
            </IfFileName>
        </Delete>
    </DefaultRolloverStrategy>
</RollingFile>

DefaultRolloverStrategy节点

参数TypeDescription
fileIndexString可选值 max, min,nomax
minintegerThe minimum value of the counter. The default value is 1.
maxintegerThe maximum value of the counter. The default value is 7.
一旦达到这个值,旧的存档将在随后的滚动中被删除。
compressionLevelinteger设置压缩级别,0-9,其中0 =无,1 =最佳速度,到9 =最佳压缩。仅对ZIP文件实现。
tempCompressedFilePatternString归档日志文件在压缩过程中的文件名模式。
<DefaultRolloverStrategy fileIndex="max" max="3" min="1">:
只保留3个日志文件,当到归档第4个文件时,
foo-1.log 被删除,
foo-2.log 被重命名为 foo-1.log,
foo-3.log 被重命名为 foo-2.log,
foo.log   被重命名为 foo-3.log。
创建新的   foo.log文件并继续写入。
<DefaultRolloverStrategy fileIndex="min" max="3" min="1">:
只保留3个日志文件,当到归档第4个文件时,
foo-3.log 被删除,
foo-2.log 重命名为foo-3.log,
foo-1.log 重命名为foo-2.log,
foo.log   重命名为foo -1.log。
创建新的   foo.log文件并继续写入。

Delete节点

参数TypeDescription
basePathStringRequired. Base path from where to start scanning for files to delete.
maxDepthint1、The maximum number of levels of directories to visit.
1.1、0 Log4j2只会检查${LOG_HOME}直接指向的目录下的.log.gz格式文件是否符合删除条件,
1.2、Integer.MAX_VALUE indicates that all levels should be visited.
1.3、The default is 1,Log4j2不仅会检查${LOG_HOME}指向的目录下的.log.gz格式文件是否符合删除条件,还会检查该目录下一层的所有子目录中的相同格式文件。
pathConditionsPathCondition[]PathCondition也可以嵌套。如果进行嵌套,则是先判断外层的PathCondition,然后进行内层的判断。如果没有嵌套,则是按顺序进行判断。

也可以创建自定义条件或使用内置条件:
IfFileName 如果文件名与此参数匹配则结果为true,此参数为正则表达式或 glob的文件。
IfLastModified 最后修改时间早于或等于此参数则结果为true,此参数为duration。
IfAccumulatedFileCount 文件数超过指定个数则结果为true,此参数为整型。
IfAccumulatedFileSize 所有文件总大小达到此参数则结果为true,此参数为KB、MB、GB。

IfAll 如果此标签下的所有条件都配置成功(逻辑与),则结果为true。
IfAny 如果此标签下的任何一个条件匹配成功(逻辑或),则结果为true。
IfNot 如果此标签下的所有条件都不匹配(逻辑非),则结果为true。
<DefaultRolloverStrategy fileIndex = "nomax">
    <Delete basePath="${LOG_HOME}" maxDepth="2">
        <IfFileName glob="*.log.gz">
            <IfLastModified age="7d">
                <IfAny>
                    <IfAccumulatedFileSize exceeds="100M"/>
                    <IfAccumulatedFileCount exceeds="100"/>
                </IfAny>
            </IfLastModified>
        </IfFileName>
    </Delete>
</DefaultRolloverStrategy>
<DefaultRolloverStrategy fileIndex = "nomax">
    <Delete basePath="${LOG_HOME}" maxDepth="2">
        <IfFileName glob="*.log.gz">
            <IfAny>
                <IfAccumulatedFileSize exceeds="100M"/>
                <IfAccumulatedFileCount exceeds="100"/>
                <IfLastModified age="30d"/>
            </IfAny>
        </IfFileName>
    </Delete>
</DefaultRolloverStrategy>
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
需要配置: log4j.rootLogger=debug,CONSOLE,testfile,A1,MAIL ################### # Console Appender ################### log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n #log4j.appender.CONSOLE.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD] n%c[CATEGORY]%n%m[MESSAGE]%n%n ################### # 单个日子记录 ################### log4j.appender.testfile=org.apache.log4j.FileAppender log4j.appender.testfile.File=c\:\\file.html log4j.appender.testfile.Append=false log4j.appender.testfile.layout=org.apache.log4j.HTMLLayout log4j.appender.testfile.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n ################### # 每天一个日志文件 ################### log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender log4j.appender.A1.File=c\:\\SampleMessages.html log4j.appender.A1.DatePattern=yyyyMMdd-HH log4j.appender.A1.layout=org.apache.log4j.HTMLLayout ################### # 邮件发送 ################### log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender log4j.appender.MAIL.BufferSize=10 log4j.appender.MAIL.From=wisdom_xw@163.com log4j.appender.MAIL.SMTPHost=smtp.163.com log4j.appender.MAIL.SMTPUsername=wisdom_xw log4j.appender.MAIL.SMTPPassword= log4j.appender.MAIL.Subject=Messsage From LOG4J log4j.appender.MAIL.To=281510262@qq.com log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout log4j.appender.MAIL.layout.ConversionPattern=[ErrorMessage] %d - %c -%-4r [%t] %-5p %c %x - %m%n

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值