首页 > 解决方案 > 如何在我的 Web 应用程序之外定义任意文件来配置 log4j2

问题描述

我的 Web 应用程序将部署到不同环境中的 Windows 和 Linux/Unix 上的 Weblogic 应用程序服务器。日志文件位置、附加程序和日志级别在不同的部署之间会有所不同,我们希望能够在运行时更改日志配置(通过交换配置文件),所以我不能嵌入 log4j2.xml(或任何其他配置文件)到我的部署中。而且由于我在无法控制的应用程序服务器上运行,因此我没有机会添加环境变量以指向另一个配置位置。

目前,我的 log4j2.xml 位于我的应用程序的类路径中,并被打包到我的 war 文件中。有没有办法告诉 Log4J2 使用配置文件,例如相对于应用程序根目录(如 Log4J 的 configureAndWatch(fileLocation) 方法)?

我找到了很多关于如何配置 Log4J2 的示例,但是我发现的关于配置文件位置的所有内容都指向应用程序类路径。

标签: configurationlog4j2

解决方案


我终于找到了解决我的问题的方法。我添加了一个名为

log4j2.component.properties

到我的项目(在 src/main/resources 中)。该文件包含一个指向我的 log4j2 配置文件位置的属性:

log4j.configurationFile=.//path//on//my//application//server//someLog4j2ConfigFile.xml

这会导致 log4j2 读取该文件并根据其内容进行自我配置。


推荐阅读