首页 > 解决方案 > 在外部 log4j 配置中包含类路径资源

问题描述

我使用外部 log4j 配置并使用 org.apache.logging.log4j.core.config.Configurator 将其加载到 servlet 上下文侦听器中

我想引用一些在构建时生成的应用程序属性(如应用程序版本)。这是我想做的事情:

/外部文件夹/log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration xmlns:xi="http://www.w3.org/2001/XInclude" 
    monitorInterval="60">

    <xi:include href="log4j2-properties.xml" />

    <Appenders>
        <Console name="stdout" target="SYSTEM_OUT">
            <PatternLayout pattern="%d %5p %t [${app-version}] %m (%F:%L) %n" />
        </Console>
    </Appenders>
<!-- ... -->
</Configuration>

log4j2-properties.xml

应该是类路径资源,@version@​​被 gradle 过滤。

<?xml version="1.0" encoding="UTF-8"?>
<Properties>
    <Property name="app-version">@version@</Property>
</Properties>

但是,这种方法不起作用。我只能从与顶级 log4j.xml 相同的文件夹中 xinclude 资源

我该如何解决我的问题?

(我知道如何使用 logback 来做到这一点,但我想升级到 log4j2)

标签: log4j2xinclude

解决方案


推荐阅读