2016-03-01 109 views
1

尝试使用$ {web:contextPath}查找来创建log4j2配置时效果不错,直到我尝试将它用于空contextPath。log4j2 lookup默认值为空contextPath

如果查找返回空字符串,是否有方法指定默认值?

如果contextPath为空,我想以某种方式指定默认值。

回答

0

尝试将其定义为config中的属性。

对于XML配置

<Properties> 
    <Property name="contextPath">default value</Property> 
</Properties> 

假设网络查找过程的工作方式相同的系统属性查找,那么它应该退回到在属性部分中定义如果web查找失败的值。

+0

我试过了你的建议,但它不起作用:-( – Shadow

+0

寻找'org.apache.logging.log4j.core.lookup.Interpolator.lookup(LogEvent event,String var)',问题是只有当值为null时才会调用回退,但在这种情况下,它只是一个空字符串。 – Shadow

+0

Web查找似乎返回ctx.getContextPath(),所以它完全依赖于ServletContext如何初始化上下文路径。它的源代码的MockServletContext构造函数'this.contextPath =“”'我假设你的上下文做了类似的事情。 – alan7678