我想将log4j2
配置为从Web启动(tomcat)动态查找日志路径。
从文档(http://logging.apache.org/log4j/2.x/manual/lookups.html)中,可以查找web:
,其中包含不同的参数可能性。
首先,我尝试使用提供的示例:
<Appenders>
<File name="ApplicationLog" fileName="${web:rootDir}/app.log"/>
</Appenders>
结果:ERROR Unable to create file ${web:rootDir}/app.log java.io.IOException
我还尝试了其他buildin属性,如servletContextName
和contextPath
,并显示了相同的错误信息。
所以我可能还遗漏了一些重要的东西。但是什么呢?
2条答案
按热度按时间jobtbby31#
添加log4j-web JAR
通常的
log4j-core
JAR文件本身是不够的。还有一个名为
log4j-web
的附加组件。为了自动替换日志配置中的
${web:...}
占位符,您需要额外的log4j-web
JAR文件。如果您没有这个log4j-web JAR文件,那么Log4j 2本身仍然可以工作,但是它不会用任何东西替换这些占位符。因此,例如${web:rootDir}
最终将只是文本${web:rootDir}
。也许您的项目中缺少了这种依赖关系?
Maven Central上的Log4j-web
dgenwo3n2#
${web:rootDir}是否为值?占位符不会被其真实的值替换。
在页面中您可以红色:
有关如何在配置文件中使用查找的信息,请参阅属性替换:http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution