Apache Log4j2 StrSubstitutor "default variable" 不起作用

Apache Log4j2 StrSubstitutor "default variable" does not work

我正在尝试配置 log4j2 记录器。它使用 Apache StringSubstitutor.

我想将默认根目录设置为“${sys:catalina.home}/webapps/${contextName}/logs/”。如果在 logger.properties 文件中设置了 属性 "userRootpath",应用程序应该使用它。我将其设置为“${bundle:logger:userRootpath}”。

为了实现这一点,我正在尝试使用描述 here 的“:-”变量默认值定界符。 但是如果我将它设置为:

它不起作用
<Property name="defaultCatalinaRootpath">${sys:catalina.home}/webapps/${contextName}/logs/</Property>
<Property name="logDir">${bundle:logger:userRootpath:-${defaultCatalinaRootpath}}</Property>

它总是只需要 ${defaultCatalinaRootpath} 而从不考虑 ${bundle:logger:userRootpath} 尽管 它已在 logger.propetie 中设置。

如果我这样设置目录...

<Property name="logDir">${bundle:logger:userRootpath}</Property>

...或者这个...

<Property name="logDir">${sys:catalina.home}/webapps/${contextName}/logs/</Property>

...它有效,所以这种情况与损坏的属性初始化无关。

我尝试在“:-”结构中以不同方式初始化属性,但对我没有任何作用。

我怎样才能达到预期的效果?

经过一些调试我认为这是一个错误,指定用于“:-”结构内的包变量,我在这里报告它:https://issues.apache.org/jira/browse/LOG4J2-2913

如果您有一些出行的想法,请分享,我将不胜感激。