【问题标题】:Apache Log4j2 StrSubstitutor "default variable" does not workApache Log4j2 StrSubstitutor“默认变量”不起作用
【发布时间】:2020-08-20 07:08:02
【问题描述】:

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

它总是只需要 ${defaultCatalinaRootpath} 并且从不考虑 ${bundle:logger:userRootpath} 尽管 它已在 logger.propetie 中设置s。

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

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

...或者这个...

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

...它可以工作,因此该案例与损坏的属性初始化无关。

我尝试在“:-”结构中以不同的方式初始化属性,但对我没有任何作用。

我怎样才能实现期望的行为?

【问题讨论】:

    标签: java log4j string-substitution


    【解决方案1】:

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

    如果您有一些想法如何解决,请分享,我将不胜感激。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-23
      • 2017-06-08
      • 2019-12-19
      • 1970-01-01
      • 2012-06-03
      • 1970-01-01
      • 2020-05-22
      • 2010-11-19
      相关资源
      最近更新 更多