Log4j2 使用 rollingFileAppender 自定义文件路径 (Java)

Log4j2 customize file path with rollingFileAppender (Java)

我正在从我的 spring 启动应用程序中的 log4j 1.x 迁移到 log4j2。在 log4j 1.x 我曾经定义属性如下:

log4j.appender.A1=package.CustomRollingFileAppender
log4j.appender.A1.File=<base.path>/company/logs/main.log

在我的 CustomRollingFileAppender 中,我将使用 DailyRollingFileAppender 扩展此 class,并覆盖 setName() 方法以将我的“”更改为相关目录名称。

迁移到 log4j 2.x 我不再拥有 class DailyRollingFileAppender 并且无法扩展 RollingFileAppender,因为它被声明为 final。我也无法覆盖 writeToName 函数。

那么,如何根据我的环境静态属性将属性文件中的 更改为相关目录名称?

您通常不会接触 log4j2 的实现代码类。你想做的事情可以通过 configuration.

完成

https://logging.apache.org/log4j/2.x/manual/migration.html https://logging.apache.org/log4j/2.x/manual/appenders.html#RollingFileAppender

你可以像这样做你想做的事

appender.rolling.type = RollingFile
appender.rolling.name = RollingFile
appender.rolling.fileName = ${BASE_DIR}/application.log
appender.rolling.filePattern = ${BASE_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

其中 BASE_DIR 是一个环境变量