apache log4j2 strsubstitutor“default variable”不工作

klsxnrf1  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(303)

我正在尝试配置log4j2记录器。它使用ApacheStringSubstitutor。
我想将默认根目录设置为“${sys:catalina.home}/webapps/${contextname}/logs/”。如果logger.properties文件中设置了属性“userrootpath”,应用程序应该使用它。我把它设为“${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>

…它是有效的,因此本案例与损坏的属性初始化无关。
我尝试用不同的方式初始化结构中的属性,但没有任何方法适合我。
我怎样才能达到期望的行为?

7kqas0il

7kqas0il1#

经过一些调试后,我认为这是一个bug,是为“:”结构中的bundle变量指定的,我在这里报告了它:https://issues.apache.org/jira/browse/log4j2-2913
如果您对如何出行有一些想法,请分享,我将不胜感激。

相关问题