[解決済み] 原因: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl は log4j-to-slf4j と一緒に存在できない。
2022-03-01 18:34:05
質問
私の Spring boot 2 プロジェクトに参加しています。
で
build.gradle
:
dependencies {
implementation 'com.google.code.gson:gson:2.7'
implementation 'com.h2database:h2'
implementation 'javax.servlet:jstl:1.2'
implementation 'org.springframework.boot:spring-boot-devtools'
implementation('org.springframework.boot:spring-boot-starter') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-log4j2'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation "org.springframework.boot:spring-boot-starter-web"
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation 'org.junit.jupiter:junit-jupiter:5.5.2'
}
で
src/resources/log4j2.xml
:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="Console"
class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<!-- l, L, M - is extremely slow. It's use should be avoided unless execution
speed is not an issue. -->
<param name="ConversionPattern"
value="%p: %d{dd.MM.yyyy HH:mm:ss.SSS} %l %n %m%n"/>
</layout>
</appender>
<appender name="File"
class="org.apache.log4j.DailyRollingFileAppender">
<param name="Encoding" value="UTF-8"/>
<param name="File" value="logs/trace.log"/>
<param name="Append" value="true"/>
<layout class="org.apache.log4j.PatternLayout">
<!-- l, L, M - is extremely slow. It's use should be avoided unless execution
speed is not an issue. -->
<param name="ConversionPattern"
value="%p: %d{dd.MM.yyyy HH:mm:ss.SSS} %l %n %m%n"/>
</layout>
</appender>
<!-- Application Loggers -->
<logger name="com.journaldev.spring">
<level value="info"/>
</logger>
<!-- 3rdparty Loggers -->
<logger name="org.springframework.core">
<level value="info"/>
</logger>
<logger name="org.hibernate">
<level value="info"/>
</logger>
<logger name="org.springframework.beans">
<level value="info"/>
</logger>
<logger name="org.springframework.context">
<level value="info"/>
</logger>
<logger name="org.springframework.web">
<level value="info"/>
</logger>
<!-- The root category is used for all loggers unless a more specific logger
matches. If none of the loggers are assigned a level, then all loggers inherit
the level of the root logger which is set to DEBUG by default -->
<root>
<level value="ALL"/>
<appender-ref ref="Console"/>
<!-- <appender-ref ref="File" /> -->
</root>
</log4j:configuration>
私のコントローラーでは
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class CategoryController {
private CategoryRepository categoryRepository;
private static Logger logger = LoggerFactory.getLogger(CategoryController.class);
@GetMapping("/categories")
public String getCategories(Model model) {
logger.debug("getCategories>>>>>>>>>>>>>>>>");
model.addAttribute("categoryList", this.categoryRepository.findAll());
return "categories/category_list";
}
}
しかし、プロジェクトを開始すると、エラーが発生します。
原因:org.apache.logging.log4j.LoggingException: log4j-slf4j-impl がlog4j-to-slf4jと一緒に存在することはできません。
解決方法は?
Springによると ドキュメント (Simonが指摘したように)私たちは、"spring-boot-starter-logging" モジュールを、(Simonが指摘したように)このモジュールから除外したいのです。 全ライブラリ のみならず、 "spring-boot-starter-web" からも。
configurations {
...
all {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
...の代わりに...
dependencies {
...
implementation('org.springframework.boot:spring-boot-starter') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
}
}
私自身も同じ問題を抱えており、この解決策で解決しました。
関連
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] 一部の入力ファイルが非推奨のAPIを使用またはオーバーライドしている
-
[解決済み] javacが「using unchecked or unsafe operations」という警告を出す原因は何ですか?
-
[解決済み] double 型を Int 型に変換、切り捨て
-
[解決済み] android.support.v4.app.FragmentActivity' で 'TAG' がプライベートアクセスされている。
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] publicId と systemId の間に空白が必要です。
-
[解決済み] IntegerからBigIntegerへの変換
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] maven. -source 1.5ではラムダ式がサポートされていません。
-
[解決済み] この配列の中の数字を入れ替えるには、何が足りないのでしょうか?ジャバ
-
[解決済み] java.lang.ClassCastException: java.util.Arrays$ArrayList は java.util.ArrayList にキャストできません。
-
[解決済み] double 型を Int 型に変換、切り捨て
-
[解決済み] raw 型のメンバへのアンチェックの呼び出し
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] JDBC タイプの方言マッピングがありません。1111
-
[解決済み] どのように配列の10未満の値(x * 2)を倍増するコードを取得するには?(Java)
-
[解決済み] アニメーションGIFの表示
-
[解決済み] Java: getInstanceとStaticの比較