[英]Log4j2: How to use replace parameter in log4j2.properties file
[英]How to use external properties file to use log4j2 in Springboot?
我不想在我的 spring boot 中使用log4j2.properties
文件。 我想使用外部屬性文件,但它向我顯示錯誤。
Exception in thread "main" java.lang.AbstractMethodError: org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(Lorg/apache/logging/log4j/core/config/ConfigurationSource;)Lorg/apache/logging/log4j/core/config/Configuration;
at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:510)
at org.apache.logging.log4j.core.config.ConfigurationFactory$Factory.getConfiguration(ConfigurationFactory.java:450)
at org.apache.logging.log4j.core.config.ConfigurationFactory.getConfiguration(ConfigurationFactory.java:257)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:560)
at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:577)
at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:212)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:152)
at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:45)
at org.apache.logging.log4j.LogManager.getContext(LogManager.java:194)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:551)
at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:537)
at com.flight.testcode.App.<clinit>(App.java:11)
Pom 文件依賴
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.6.1</version>
</dependency>
那么我如何使用外部屬性文件。
2.11.1版本的log4j2也不支持嗎?
添加以下依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
然后在啟動時指定您的日志記錄配置:
-Dlogging.config=/path/to/log4j2.yaml (or .json or .xml)
最后我找到了 log42 外部文件加載的解決方案。
import org.apache.logging.log4j.core.config.Configurator;
static {
Configurator.initialize(null, "<filename>.properties");
}
如果我們不使用Configurator.initialize()
方法,那么 log4j2 使用它的默認配置。
Log4j 將檢查“log4j.configurationFile”系統屬性,如果已設置,將嘗試加載配置。
如果您正在使用 gradle,並嘗試運行測試方法,則必須將以下內容添加到 build.gradle。 這使測試方法能夠在測試運行期間選擇 -D log4j.configurationFile = 來選擇:
測試 { systemProperty "log4j.configurationFile", System.getProperty("log4j.configurationFile") }
文件搜索的層次結構在此處的文檔中進行了說明:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.