我正在尝试配置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
如果你对如何四处走动有一些想法,请分享,我将不胜感激。