如何在log4j2.xml中动态设置日志文件路径

时间:2019-03-12 14:17:58

标签: java spring-boot log4j2

我已经在spring-boot中使用log4j2完成了日志记录。我想从属性文件动态设置日志文件路径。我已经为此编写了以下代码,但是效果不佳。

我的属性文件 abc.properties 代码如下

log4j2FilePath = logs/log4j2-demo.log

和我的日志文件 log4j2.xml 代码如下

 <Property name="log-path">config.properties.log4j2FilePath</Property>

        <RollingFile name="FileAppender" fileName="${log-path}"
                     filePattern="logs/log4j2-demo-%d{yyyy-MM-dd}-%i.log">
            <PatternLayout>
                <Pattern>${LOG_PATTERN}</Pattern>
            </PatternLayout>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1" />
                <SizeBasedTriggeringPolicy size="10MB" />
            </Policies>
            <DefaultRolloverStrategy max="10"/>
        </RollingFile>

2 个答案:

答案 0 :(得分:0)

默认情况下, log4j2 log4j2.properties 文件中查找声明的动态属性。
如果您想使用其他属性文件,例如 abc.properties ,我建议使用代理变量。

我的意思是,您可以在 log4j2.properties 中创建一个变量,该变量实际上是从 abc.properties 获取值的。

因此,您可以像这样在 log4j2.properties 中访问varaibale,

property.fileName=${bundle:abc:log.path}

答案 1 :(得分:0)

如果您用“动态”一词来表示“以编程方式”,那么这就是解决方案。

在 log4j2.properties 文件中添加以下行

PYTHONPATH

并在java中设置系统属性如下

appender.rolling.fileName = ${sys:logFilePath}/logger.log

我是 log4j2 的新手,我使用 .properties 文件。所以我不确定 xml 中 System.setProperty("logFilePath", "path to the log folder"); 的等价物是什么。