如何在我的 Web 应用程序之外定义任意文件来配置 log4j2

How can I define an arbitrary file outside my web application to configure log4j2

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

目前,我的 log4j2.xml 驻留在我的应用程序的 class 路径中,并且正在打包到我的 war 文件中。有没有办法告诉 Log4J2 使用配置文件 e. G。相对于应用程序根目录(如 Log4J 的 configureAndWatch(fileLocation) 方法)?

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

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

的文件
log4j2.component.properties

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

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

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