Apache Log4j2 StrSubstitutor "default variable"不起作用



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

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

为了实现这一点,我尝试使用":-">此处描述的变量默认值分隔符。但如果我将其设置为:,它就不起作用

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

它总是只使用${defaultCatalinaRootpath},从不考虑${bundle:logger:userRootpath}(尽管已在logger.properties中设置(。

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

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

或者这个。。。

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

它是有效的,所以这种情况不是关于损坏的属性初始化。

我试图在":-"结构,但对我来说什么都不管用。

如何实现所需的行为

经过一些调试后,我认为这是一个错误,为"中的bundle变量指定:-"结构,我在这里报告了它:https://issues.apache.org/jira/browse/LOG4J2-2913

如果你对如何四处走动有一些想法,请分享,我将不胜感激。

最新更新