2016-11-02 6 views
0

開発者がlog4j2.xmlファイルの作成を気にする必要がないように、log4j2設定をプログラムで作成するSpringbootスターターを構築しようとしています。問題は、log4j2プログラムAPIがバージョンごとに変わることです。 log4j2バージョン2.5でコードをテストし、スタンドアロン環境で正常に動作するようにしました。SpringBootスターターでのlog4j2バージョンのオーバーライド

ここではAPIをSpringbootスターターに含めようとしているので、すべてのspringbootアプリケーションにこのスターターが含まれていても構わないlog4jの設定について。

私たちが直面している問題は、Springbootが独自のバージョンのlog4jをバンドルしており、ユーザーが使用するSpringbootのバージョンを制御できないことです。

我々は我々のテストSpringbootアプリはlog4jの

答えて

0

には見られないいくつかの方法について不平を言っている他のlog4j2のバージョン2.5をロードするためにspringbootスターターを強制することができます方法は、あなたがあなたでそれらを宣言することで、依存関係のバージョンを上書きすることができますありますmaven pomファイルまたはgradleファイル。

のmavenでは、デフォルトのlogbackロガーを除くと、あなたは、このスターターポンポンの内容を確認する場合は、次の依存関係

<dependency> 
<groupId>org.springframework.boot</groupId> 
<artifactId>spring-boot-starter-log4j2</artifactId> 
</dependency> 

を追加していく予定log4j2依存関係を含めて、あなたはそれで次の依存関係を見ることができます

<dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-slf4j-impl</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-api</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.logging.log4j</groupId> 
     <artifactId>log4j-core</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jcl-over-slf4j</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>jul-to-slf4j</artifactId> 
    </dependency> 

バージョンが管理されているこれらの依存関係のいずれかを上書きするためには、あなたのポンポンファイルでこれらの依存関係を再宣言することができますし、そのための「バージョン」のタグを提供しています。単にあなたのポンポンファイルでこの

<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-api</artifactId> 
<version>2.5</version> 
</dependency> 
<dependency> 
<groupId>org.apache.logging.log4j</groupId> 
<artifactId>log4j-core</artifactId> 
<version>2.5</version> 
</dependency> 

が含まれます。 MavenやGradleなどの依存関係管理ツールは、このタイプのオーバーライドをサポートしています。

+0

お返事ありがとうございます。私たちが気づいたことは、私たちのスターターを使用しているSpringbootアプリケーションでlog4j2の依存関係を設定すると、問題なく動作するということです。しかし、これは望ましい解決策ではない。私たちはスターターに依存関係を設定したいので、最終的なアプリケーションは正しいlog4j2バージョンを使用することができます。しかし、スターターにlog4j2バージョンの依存関係を設定すると、最終アプリケーションは、設定したものではなく、Springbootバージョンに付属のlog4j2バージョンを使用します。 –

+0

あなたの春のブートアプリケーションは、春のブートスターターを使用せず、あなたの "スターター"を使用していますか?あなたはあなたのプロジェクトの構造、お金などにいくつかの詳細を投稿できますか? –

関連する問題