1. 概要

以前のチュートリアルであるSpringプロファイルSpringBootでのロギングでは、さまざまなプロファイルをアクティブにして、SpringでLog4j2を使用する方法を示しました。

この短いチュートリアルでは、Springプロファイルごとに異なるLog4j2構成を使用する方法を学習します。

2. 異なるプロパティファイルを使用する

たとえば、log4j2.xmllog4j2-dev.xmlの2つのファイルがあり、1つはデフォルトプロファイル用で、もう1つは「dev」プロファイル用であるとします。

application.properties ファイルを作成し、ログ構成ファイルの場所を指定しましょう。

logging.config=/path/to/log4j2.xml

次に、 application-dev.properties という名前の「dev」プロファイル用の新しいプロパティファイルを作成し、同様の行を追加しましょう。

logging.config=/path/to/log4j2-dev.xml

「prod」などの他のプロファイルがある場合は、「prod」プロファイル用に同様の名前のプロパティファイルapplication-prod.propertiesを作成するだけで済みます。 プロファイル固有のプロパティは常にデフォルトのプロパティを上書きします。

3. プログラムによる構成

Spring Boot Application クラスを変更することにより、使用するLog4j2構成ファイルをプログラムで選択できます。

@SpringBootApplication
public class Application implements CommandLineRunner {

    @Autowired
    private Environment env;

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

    @Override
    public void run(String... param) {
        if (Arrays.asList(env.getActiveProfiles()).contains("dev")) {
            Configurator.initialize(null, "/path/to/log4j2-dev.xml");
        } else {
            Configurator.initialize(null, "/path/to/log4j2.xml");
        }
    }
}

Configurator は、Log4j2ライブラリのクラスです。 構成ファイルの場所とさまざまなオプションのパラメーターを使用してLoggerContextを構築するいくつかの方法を提供します。

このソリューションには1つの欠点があります。それは、Log4j2を使用してアプリケーションの起動プロセスがログに記録されないことです。

4. 結論

要約すると、Springプロファイルごとに異なるLog4j2構成を使用するための2つのアプローチを見てきました。 まず、プロファイルごとに異なるプロパティファイルを提供できることを確認しました。 次に、アクティブなプロファイルに基づいて、アプリケーションの起動時にプログラムでLog4j2を構成する方法を確認しました。