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

标签 java spring tomcat log4j log4j2

我想配置 log4j2 以从 Web 启动 (tomcat) 动态查找日志记录路径。

在文档 ( http://logging.apache.org/log4j/2.x/manual/lookups.html ) 中,有一个 web: 具有不同参数可能性的查找。

起初我正在尝试提供的示例:

<Appenders>
   <File name="ApplicationLog" fileName="${web:rootDir}/app.log"/>
</Appenders>

结果:错误无法创建文件 ${web:rootDir}/app.log java.io.IOException

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

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

最佳答案

添加 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

关于java - 如何在 log4j2 的 Web 应用程序中查找属性参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28827506/

相关文章:

java - 当有颜色时 XSSFColor.getRgb() 返回 null

java - Camel FTP 定时轮询

java - 我可以将单个静态项目注入(inject) Spring Batch 项目读取器吗?

tomcat - 在 wildfly 中运行特定的 sudo 命令

android - 使用Sencha CMD 6.5 生成的App Android 的CORS 发出POST 请求(403 Forbidden)

java - 从数组列表中读取并与输入字符串进行比较

java - 在 AMI 4.x 上运行 EMR 作业之前,如何从/usr/lib/hadoop/lib 中删除文件?

java - Spring @ModelAttribute 模型字段映射

mysql - grails tomcat jndi 的最佳 mysql 数据源属性

java - Java 中的通用代码生成