如何在Log4j版本2中动态设置FileAppender的文件名?

时间:2018-10-03 09:55:57

标签: java logging log4j log4j2

在log4j 1.x中      我们可以直接使用FileAppender类的setFile方法

在log4j 2.x中      FileAppender类没有setFile方法。...

我想在log4j2.properties中静态初始化附加程序的文件名,然后在运行时动态更改该附加程序的文件名。

如何实现?

2 个答案:

答案 0 :(得分:-1)

您应该添加一个新的FileAppender并停止旧的FileAppender。

看看log4j文档中的"Programmatically Modifying the Current Configuration after Initialization"

答案 1 :(得分:-1)

这是我的log4j2文件。当日志文件符合策略时,将创建一个新的日志文件。并且在appender.rolling.filePattern中指定了文件名,由于%d{yyyy-MM-dd}appender.rolling.policies.time.interval=1,系统每天都会创建一个新文件。您可以在%d{yyyy-MM-dd-HH}上添加更多内容,日志文件将每小时生成一次。

name=PropertiesConfig
property.filename= ./logs
appenders= rolling

appender.rolling.type=RollingFile
appender.rolling.name=RollingFile
appender.rolling.fileName=${filename}/here-are-my-log-propertieslogs.log
appender.rolling.layout.type=PatternLayout
appender.rolling.filePattern=${filename}/feedback-propertieslogs-%d{yyyy-MM-dd}-%i.log
appender.rolling.layout.pattern=[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1}:%L - %msg%n

# Rotate log file each day and keep 30 days worth
appender.rolling.policies.type=Policies
appender.rolling.policies.time.type=TimeBasedTriggeringPolicy
appender.rolling.policies.time.interval=1
appender.rolling.policies.time.modulate=true
appender.rolling.policies.size.type=SizeBasedTriggeringPolicy
appender.rolling.policies.size.size=5MB
appender.rolling.strategy.type=DefaultRolloverStrategy
appender.rolling.strategy.max=31

appender.rolling.strategy.delete.type=Delete
appender.rolling.strategy.delete.basePath=${filename}
appender.rolling.strategy.delete.maxDepth=1

appender.rolling.strategy.delete.ifLastModified.type=IfLastModified
appender.rolling.strategy.delete.ifLastModified.age=30d

appender.rolling.strategy.delete.ifAccumulatedFileCount.type=IfAccumulatedFileCount
appender.rolling.strategy.delete.ifAccumulatedFileCount.exceeds=30

appender.rolling.strategy.delete.ifAccumulatedFileSize.type=IfAccumulatedFileSize
appender.rolling.strategy.delete.ifAccumulatedFileSize.exceeds=100MB