configuration - 如何在我的 Web 应用程序之外定义任意文件来配置 log4j2
问题描述
我的 Web 应用程序将部署到不同环境中的 Windows 和 Linux/Unix 上的 Weblogic 应用程序服务器。日志文件位置、附加程序和日志级别在不同的部署之间会有所不同,我们希望能够在运行时更改日志配置(通过交换配置文件),所以我不能嵌入 log4j2.xml(或任何其他配置文件)到我的部署中。而且由于我在无法控制的应用程序服务器上运行,因此我没有机会添加环境变量以指向另一个配置位置。
目前,我的 log4j2.xml 位于我的应用程序的类路径中,并被打包到我的 war 文件中。有没有办法告诉 Log4J2 使用配置文件,例如相对于应用程序根目录(如 Log4J 的 configureAndWatch(fileLocation) 方法)?
我找到了很多关于如何配置 Log4J2 的示例,但是我发现的关于配置文件位置的所有内容都指向应用程序类路径。
解决方案
我终于找到了解决我的问题的方法。我添加了一个名为
log4j2.component.properties
到我的项目(在 src/main/resources 中)。该文件包含一个指向我的 log4j2 配置文件位置的属性:
log4j.configurationFile=.//path//on//my//application//server//someLog4j2ConfigFile.xml
这会导致 log4j2 读取该文件并根据其内容进行自我配置。
推荐阅读
- java - 从网络读取 xml
- automated-tests - 自动化测试的代码覆盖率
- excel - Excel VBA切片器选择每个项目
- python - 检查列表是否存在于列表列表中的最快方法
- laravel - Laravel - 雄辩:在模型中准备插入方法
- python - load_csv_with_header() 得到了一个意外的关键字参数“target_dytpe”
- node.js - 在我的 .babelrc 文件中添加插件的正确位置在哪里
- reactjs - 在测试 React 组件时,Enzyme 如何与 Jest 一起工作?
- makefile - Makefile:为什么总是使用 `$(MAKE)` 而不是 `make`?
- ios - 我正在尝试安装“VLCKit”pod 文件