簡體   English   中英

如何使用外部屬性文件在Springboot中使用log4j2?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM