Log4j2 RollingFileAppender示例

Log4j2 RollingFileAppender示例

原文: https://howtodoinjava.com/log4j2/log4j2-rollingfileappender-example/

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

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

1. Log4j2 Maven 依赖项


<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.11.1</version>
</dependency>

<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.11.1</version>
</dependency>

maven 仓库中检查最新版本。

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

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

2.1. log4j2.properties

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

name = PropertiesConfig

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${LOG_DIR}/application.log
appender.rolling.filePattern = ${LOG_DIR}/application.%d{dd-MMM}.log.gz
appender.rolling.layout.type = PatternLayout
appender.rolling.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %m%n
appender.rolling.policies.type = Policies
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=10MB
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.max = 5

logger.rolling.name = rollingFile
logger.rolling.level = debug
logger.rolling.additivity = false
logger.rolling.appenderRef.rolling.ref = RollingFile

2.2 log4j2.xml

<RollingFile 
	name="rollingFile"
	fileName="${LOG_DIR}/application.log"
	filePattern="${LOG_DIR}/application.%i.log.gz"
	ignoreExceptions="false">
	<PatternLayout>
	    <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern>
	</PatternLayout>
	<Policies>
	    <SizeBasedTriggeringPolicy size="10MB" />
	</Policies>
	<DefaultRolloverStrategy max="5" />
</RollingFile>

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

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

3.1 RollingFileAppender示例

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

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

例如,模式'{MM-dd-yyyy-HH}'将每小时滚动日志文件。

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

<RollingFile 
	name="rollingFile"
	fileName="${LOG_DIR}/application.log"
	filePattern="${LOG_DIR}/application.%d{dd-MMM}.log.gz"
	ignoreExceptions="false">
	<PatternLayout>
	    <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern>
	</PatternLayout>
	<Policies>
	    <TimeBasedTriggeringPolicy filePattern="${LOG_DIR}/application.%d{dd-MMM-hh}.log.gz" />
	</Policies>
	<DefaultRolloverStrategy max="5" />
</RollingFile>

3.2 每日滚动日志示例

为了启用每日滚动,log4j2 没有DailyRollingFileAppender,这是较早的 log4j 中存在的。 要每天滚动日志,请在TimeBasedTriggeringPolicy中将时间间隔设置为 1。

<RollingFile 
	name="rollingFile"
	fileName="${LOG_DIR}/application.log"
	ignoreExceptions="false">
	<PatternLayout>
	    <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern>
	</PatternLayout>
	<Policies>
	    <TimeBasedTriggeringPolicy interval="1"/>
	</Policies>
	<DefaultRolloverStrategy max="5" />
</RollingFile>

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

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

在给定的示例中,附加器可以使用包含{dd-MMM}filePattern属性引用文件名模式和基于时间的滚动策略。 基于大小的滚动将发生在 10 MB。

<RollingFile 
	name="rollingFile"
	fileName="${LOG_DIR}/application.log"
	filePattern="${LOG_DIR}/application.%d{dd-MMM}.log.gz"
	ignoreExceptions="false">
	<PatternLayout>
	    <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5p %m%n</Pattern>
	</PatternLayout>
	<Policies>
	    <OnStartupTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="10 MB" />
        <TimeBasedTriggeringPolicy />
	</Policies>
	<DefaultRolloverStrategy max="5" />
</RollingFile>

学习愉快!

参考文献:

RollingFileAppender Java 文档