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

我在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>
0
投票

默认情况下,log4j2在log4j2.properties文件中查找声明的动态属性。 如果你想使用其他一些属性文件,让我们说abc.properties,我建议使用代理变量。 我的意思是,你可以在log4j2.properties中创建一个实际从abc.properties获取值的变量。 所以你可以像这样访问log4j2.properties中的varaibale,

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

ABC.properties

log4j2FilePath =日志/ log4j2-demo.log

<Properties>
    <Property name="log-path">${bundle:abc:log4j2FilePath}</Property>
</Properties>
0
投票

默认情况下,spring-boot正在寻找logback.xml(或logback-spring.xml)到您的项目资源文件夹中。如果要使用动态生成的设置,可以将属性覆盖到application.properties文件中logging.config=/some/path/logging-settings.xml

所有logging.*属性都是LoggingApplicationListener的一部分