【发布时间】: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