[英]How to use multiple configuration files for log4j2
我正在編寫測試 Java 庫的 Java 代碼。 該庫包含自己的 log4j2 配置作為分發的一部分。
我想在我的測試代碼中使用 log4j2 而不修改庫的配置。
有沒有辦法為我的測試代碼設置單獨的 log4j2 配置?
這一切都作為命令行 Java 運行,根本沒有服務器或 Web 參與。
編輯以嘗試更清楚:我想要的是能夠配置記錄器、附加器等以供測試代碼使用,同時讓庫代碼使用其自己單獨的配置文件進行日志記錄。 這個想法是在我的測試代碼中使用 log4j2,但不必更改庫的配置文件。 由於庫配置文件是庫發行版的一部分,我不想為了測試而更改它。
這可能會有所幫助:
因此,一種選擇是將庫的配置(log4j2.xml)復制到 log4j2-test.xml 並將您自己的配置添加到 log4j2-test.xml。
此外,Log4j2支持 XML 配置中的 XInclude ,因此您可以使用該功能來避免在 log4j2-test.xml 中復制庫的配置。
Log4j2 支持完全符合您要求的“復合配置”。 您需要做的就是在log4j.configurationFile
屬性中提供多個文件的路徑。 這可以從命令行傳遞或添加到應用程序中的log4j2.component.properties
文件中。
參考資料: https : //logging.apache.org/log4j/2.x/manual/configuration.html#CompositeConfiguration https://logging.apache.org/log4j/2.x/manual/configuration.html#SystemProperties
您可以嘗試通過兩個步驟來解決您的問題
cmd> java -Dlog4j.configuration=location/xyz.properties
如果您使用不同的名稱進行配置而不是 log4j.properties/.xml 文件,您需要在運行時通過上述命令配置該文件以獲取更多信息,請查看此處..
將備用 XML 文件用於 log4j2.xml 的正確格式:
java -Dlog4j.configurationFile=./location/log4j2-custom.xml
假設./location/log4j2-custom.xml
存在並且是在此運行中替換 log4j2.xml 的新 XML
請參閱: https : //github.com/kamalcph/Log4j2Examples/blob/master/src/main/java/in/co/nmsworks/log4j2/examples/CompositeConfigurationExample.java
參考https://logging.apache.org/log4j/2.x/manual/configuration.html指出您可以在 log4j2.configurationFile 屬性下添加多個逗號分隔的文件。
要使用多個配置文件,您必須根據環境進行設置。
例如:
if (env.equals("DEV")) {
setConfigFile("log4j2-dev.xml");
}
public static void setConfigFile(String logConfigFile) {
File file = new File(logConfigFile);
LoggerContext context = (org.apache.logging.log4j.core.LoggerContext) LogManager.getContext(false);
context.setConfigLocation(file.toURI());
}
first configure application.yaml file
spring:
profiles:
active: dev
---
spring:
message: running in the dev profile //just to output the message in the log
profiles: dev
logging.config: classpath:log4j2-dev.xml
---
spring:
profiles: prod
logging.config: classpath:log4j2-prod.xml
and create these similar files in your classpath
* log4j2-dev.xml
* log4j2-prod.xml
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.