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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在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>
答案

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

property.fileName=${bundle:abc:log.path}
另一答案

ABC.properties

log4j2FilePath =日志/ log4j2-demo.log

<Properties>
    <Property name="log-path">${bundle:abc:log4j2FilePath}</Property>
</Properties>
另一答案

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

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

以上是关于如何在log4j2.xml中动态设置日志文件路径的主要内容,如果未能解决你的问题,请参考以下文章

log4j如何动态改变存放路径

动态配置log4j2.xml日志输出文件的位置

Log4J配置文件里的日志文件路径问题!!!急~

log4j 动态改变日志的输出路径

如何将web应用项目中log4j的日志只打印到独立的文件,不打印在Tomcat的catalina.out?

log4j2.xml 配置