Log4jRollingFileAppender配置示例

Log4jRollingFileAppender配置示例

原文: https://howtodoinjava.com/log4j/log4j-rolling-file-appender/

Log4j RollingFileAppenderOutputStreamAppender,它按照有关何时发生滚动(备份)的已配置触发策略,将日志消息写入文件。 它还具有有关如何转换文件的已配置转换策略。

通常,日志文件的备份是根据文件大小和/或当前日期创建的。

1. Log4j Maven 依赖项

<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

2. RollingFileAppender示例 – 基于日志文件大小的滚动

此给定的配置根据日志文件大小滚动日志文件。 我已将日志文件大小配置为 10 MB。 根据您的要求进行更改。

2.1. log4j.properties

我们可以按照给定的方式在log4j.properties中配置滚动文件附加器。

log4j.appender.rollingFile=org.apache.log4j.RollingFileAppender
log4j.appender.rollingFile.File=${LOG_DIR}/application.log
log4j.appender.rollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.rollingFile.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
log4j.appender.rollingFile.MaxFileSize=10MB
log4j.appender.rollingFile.MaxBackupIndex=5
log4j.appender.rollingFile.append=true

log4j.rootCategory=ALL, rollingFile

2.2 log4j.xml

<appender name="rollingFile" class="org.apache.log4j.RollingFileAppender">
    <param name="file" value="${LOG_DIR}/application.log" />
    <param name="MaxFileSize" value="10MB" />
    <param name="MaxBackupIndex" value="5" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n" />
        </layout>
</appender>

3. RollingFileAppender – 基于日期时间的滚动

我们也可以根据日期时间滚动日志文件。

3.1 RollingFileAppender示例

如果使用RollingFileAppender,则使用TimeBasedRollingPolicy来指定何时基于日期时间滚动日志文件。

注意FileNamePattern属性。 它定义了滚动文件的名称模式。 在给定的示例中,它将在日志文件名中使用date-month重命名滚动日志文件。

例如,模式'{dd-MMM}'将在一个月的每天中滚动日志文件。 同样,'{MM-dd-yyyy-HH}'将每小时滚动一次。

我们还使用.gz扩展名,因此 log4j 将自动压缩日志文件

<appender name="rollingFile" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="FileNamePattern" value="${LOG_DIR}/application.%d{dd-MMM}.log.gz" />
    </rollingPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
    </layout>
</appender>

3.2 DailyRollingFileAppender示例

为了启用每日滚动,log4j 提供了DailyRollingFileAppender,它扩展了FileAppender。 如果要每天滚动日志文件,请直接使用它。

<appender name="rollingFile" class="org.apache.log4j.rolling.DailyRollingFileAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
    </layout>
</appender>

4. RollingFileAppender – 基于日志大小和日期时间的滚动

如果要同时基于文件大小和日期时间来滚动日志文件,则需要同时使用SizeBasedTriggeringPolicyTimeBasedRollingPolicy

<appender name="rollingFile" class="org.apache.log4j.rolling.RollingFileAppender">
    <rollingPolicy 
    	class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
        <param name="ActiveFileName" value="${LOG_DIR}/application.log" />
        <param name="FileNamePattern" value="${LOG_DIR}/application.%d{dd-MMM}.log.gz" />
    </rollingPolicy>
    <triggeringPolicy
        class="org.apache.log4j.rolling.SizeBasedTriggeringPolicy">
        <param name="MaxFileSize" value="10MB" />
    </triggeringPolicy>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n" />
    </layout>
</appender>

参考文献:

Log4j RollingFileAppender Java 文档