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

How to lookup property parameter in web app for log4j2?

我想配置 log4j2 以从网络启动时动态查找日志记录路径 (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

我还尝试了其他内置属性,如 servletContextNamecontextPath,但出现相同的错误消息。

所以我可能还遗漏了一些重要的东西。但是什么?

${web:rootDir} 是一个值吗?占位符未被其实际值替换。

在页面中你可以红:

Information on how to use Lookups in configuration files can be found in the Property Substitution: http://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution

添加 log4j-web JAR

您常用的 log4j-core JAR 文件本身是不够的。

还有一个名为 log4j-web 的附加组件。

要自动替换日志配置中的 ${web:...} 占位符,您需要额外的 log4j-web JAR 文件。如果您没有这个 log4j-web JAR 文件,那么 Log4j2 本身仍然可以工作,但它不会用任何东西替换这些占位符。因此,例如 ${web:rootDir} 最终将作为文字文本 ${web:rootDir}.

也许您的项目中缺少该依赖项?

Log4j-web on Maven Central