微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Apache Log4j2 StrSubstitutor“默认变量”不起作用

如何解决Apache Log4j2 StrSubstitutor“默认变量”不起作用

我正在尝试配置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

如果您对如何出行有任何想法,请分享,我将不胜感激。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。