如何在log4j2的Web应用程序中查找属性参数?

hc8w905p  于 2022-11-06  发布在  其他
关注(0)|答案(2)|浏览(217)

我想将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属性,如servletContextNamecontextPath,并显示了相同的错误信息。
所以我可能还遗漏了一些重要的东西。但是什么呢?

jobtbby3

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

dgenwo3n

dgenwo3n2#

${web:rootDir}是否为值?占位符不会被其真实的值替换。
在页面中您可以红色:
有关如何在配置文件中使用查找的信息,请参阅属性替换:http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution

相关问题