Log4j logrotation - 每天拆分日志文件,并在2天后归档

时间:2016-09-07 07:04:30

标签: java spring log4j2 centos6

我在我的春季MCV应用程序中使用log4j,我需要每天拆分日志文件,但需要保留旧文件2天,之后需要存档文件。我怎么能做到这一点? 我的配置如下,

    <Appenders>
    <File name="INBOUND-ERROR" fileName="${log-path}/inbound-errors.log" append="false">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
    </File>
    <File name="OUTBOUND-ERROR" fileName="${log-path}/outbound-errors.log" append="false">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
    </File>
    <File name="ENCRYPTIONDECRYPTION-ERROR" fileName="${log-path}/encryptiondecryption-errors.log" append="false">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
    </File>
    <Console name="STDOUT" target="SYSTEM_OUT">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
    </Console>
    <File name="INBOUND-ADMIN" fileName="${log-path}/inbound-admin.log" append="false">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
    </File>
    <File name="OUTBOUND-ADMIN" fileName="${log-path}/outbound-admin.log" append="false">
        <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
    </File>
    <RollingFile name="RollingFile-Inbound-Appender"
                 fileName="${log-path}/inbound.log"
                 filePattern="${archive}/inbound.log.%d{yyyy-MM-dd}.%i.log.gz">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="300 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="300000"/>
    </RollingFile>
    <RollingFile name="RollingFile-Outbound-Appender"
                 fileName="${log-path}/outbound.log"
                 filePattern="${archive}/outbound.log.%d{yyyy-MM-dd}.%i.log.gz">
        <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
        <Policies>
            <TimeBasedTriggeringPolicy/>
            <SizeBasedTriggeringPolicy size="300 MB"/>
        </Policies>
        <DefaultRolloverStrategy max="300000"/>
    </RollingFile>
</Appenders>

1 个答案:

答案 0 :(得分:0)

anwser对 log4j2 有效(这很令人困惑 - 你把log4j2的标记,但在你提到的log4j的问题中)。

TimeBasedTriggeringPolicy 区间属性应该可以实现。它应用于日期模式中最具体的时间单位(请参阅manual)。所以,它应该是这样的:

<RollingFile name="RollingFile-Inbound-Appender"
             fileName="${log-path}/inbound.log"
             filePattern="${archive}/inbound.log.%d{yyyy-MM-dd}.%i.log.gz">
    <PatternLayout pattern="[%-5level] %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}.%M() :line%L - %m%n"/>
    <Policies>
        <TimeBasedTriggeringPolicy interval=2/>
        <SizeBasedTriggeringPolicy size="300 MB"/>
    </Policies>
    <DefaultRolloverStrategy max="300000"/>
</RollingFile>