5

是否有一个可以让我每天滚动、压缩和最大文件的附加程序?

我可以使用apache-log4j-extras以下配置获取带有压缩的每日滚动文件:

<appender name="debugFileRolling" class="org.apache.log4j.rolling.RollingFileAppender">
    <!-- The active file to log to -->
    <param name="file" value="debug.log" />
    <param name="append" value="true" />
    <param name="encoding" value="UTF-8" />
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="/%d{yyyy-MM-dd}-debug.log.gz" />
    </rollingPolicy>

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%-5p %d [%t] %c: %m%n" />
    </layout>
</appender>

但我不能指定MaxBackupIndexorg.apache.log4j.RollingFileAppender(注意两者之间的命名空间略有不同)。

我希望两者都不需要实现我自己的FileAppender,TriggeringPolicyRollingPolicy.

4

1 回答 1

7

log4j 1.2没有支持您所需的所有功能的附加程序。您必须使用自己的实现。

log4j2似乎支持您的要求。请查看log4j2 文档

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log"
       filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
      </Policies>
      <DefaultRolloverStrategy max="20"/>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
      <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>
于 2014-12-15T12:33:32.690 回答