【问题标题】:Log4j2 customize file path with rollingFileAppender (Java)Log4j2 使用 rollingFileAppender (Java) 自定义文件路径
【发布时间】:2021-02-11 12:10:55
【问题描述】:

我正在我的 Spring Boot 应用程序中从 log4j 1.x 迁移到 log4j2。在 log4j 1.x 上,我曾经将属性定义如下:

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

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

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

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

【问题讨论】:

    标签: java logging log4j2 rollingfileappender


    【解决方案1】:

    您通常不会接触 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 是一个环境变量

    【讨论】:

    • 这真的很有帮助,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-09-23
    • 2023-04-09
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-11
    相关资源
    最近更新 更多