问题描述
我正在尝试配置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>
尽管已经在logger.propetie s中设置了它,但它总是只花费$ {defaultCatalinaRootpath},而从不考虑$ {bundle:logger:userRootpath}。
如果我这样设置目录...
<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
如果您对如何出行有任何想法,请分享,我将不胜感激。