Spring 5統合ログ4 j 2ログ
21146 ワード
Springは5にアップグレードされました.Xバージョン、最近Spring 5を使っています.Xはログ4 j 2+Slf 4 jログを統合する際、バージョンアップの問題に悩まされた.Spring 4.X方式でjarパッケージを追加し、ネットで調べたMaven依存は以下のようになります.
追加後、log 4 j 2を作成する.xmlを使用して、次のコードを使用してテストします.
ここで、インポートされた2つのパッケージは、エディタ(IDEA)によって自動的にインポートされます.
運転後に次のエラーが発生しました:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
資料を調べてみるとSpring 5では以前の4.0バージョンのコンフィギュレーションクラスが多く廃棄されていたので、Maven依存項目を更新し、正しいログパッケージを導入してこそ楽しく遊ぶことができる.詳細な構成と手順は次のとおりです.
1.Mavn依存項目の追加
次の4つの依存項目が必要です
私が使っているSpringバージョンは5.0です.8,次のように
2.log 4 j 2を構成する.xmlファイル
srcのresourcesディレクトリの下にlog 4 j 2を新規作成します.xml、内容は以下の通りです.
3.テストファイルの作成
正しいログパッケージをインポートすることに注意してください.
完全なテストコードは次のとおりです.
実行、コンソール出力
成功!
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-apiartifactId>
<version>1.7.21version>
dependency>
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-log4j12artifactId>
<version>1.7.21version>
dependency>
追加後、log 4 j 2を作成する.xmlを使用して、次のコードを使用してテストします.
package test;
import org.slf4j.LoggerFactory;
import java.util.logging.Logger;
/***
*@ClassName LogTest
*@Description TODO: Slf4j Log4j2 ,
*@Author zjh
*@Data 2019/11/20 16:15
*@Version 1.0.0
***/
public class LogTest {
private static final Logger log = LoggerFactory.getLogger(LogTest.class);
public static void main(String[] args) {
log.info("hello world");
log.warning("hello world");
}
}
ここで、インポートされた2つのパッケージは、エディタ(IDEA)によって自動的にインポートされます.
運転後に次のエラーが発生しました:
java.lang.ExceptionInInitializerError Caused by: java.lang.ClassCastException: org.slf4j.impl.Log4jLoggerAdapter cannot be cast to java.util.logging.Logger at test.LogTest.(LogTest.java:16)
エラーはprivate static final Logger log = LoggerFactory.getLogger(LogTest.class);
行に表示されます.原因は「=」の右のタイプがorg.slf4j.Logger
で、左のタイプがjava.util.logging.Logger
で、両側のタイプが合わずエラーが発生しました.----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
資料を調べてみるとSpring 5では以前の4.0バージョンのコンフィギュレーションクラスが多く廃棄されていたので、Maven依存項目を更新し、正しいログパッケージを導入してこそ楽しく遊ぶことができる.詳細な構成と手順は次のとおりです.
1.Mavn依存項目の追加
次の4つの依存項目が必要です
<dependency>
<groupId>org.slf4jgroupId>
<artifactId>slf4j-apiartifactId>
<version>1.8.0-alpha2version>
dependency>
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-slf4j-implartifactId>
<version>2.10.0version>
dependency>
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-apiartifactId>
<version>2.10.0version>
dependency>
<dependency>
<groupId>org.apache.logging.log4jgroupId>
<artifactId>log4j-coreartifactId>
<version>2.10.0version>
dependency>
私が使っているSpringバージョンは5.0です.8,次のように
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.0.8.RELEASEversion>
dependency>
2.log 4 j 2を構成する.xmlファイル
srcのresourcesディレクトリの下にlog 4 j 2を新規作成します.xml、内容は以下の通りです.
<configuration status="WARN">
<appenders>
<console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
console>
appenders>
<loggers>
<root level="info">
<appender-ref ref="Console"/>
root>
loggers>
configuration>
3.テストファイルの作成
正しいログパッケージをインポートすることに注意してください.
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
完全なテストコードは次のとおりです.
package test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/***
*@ClassName LogTest
*@Description TODO: Slf4j Log4j2 ,
*@Author zjh
*@Data 2019/11/20 16:45
*@Version 1.0.1
***/
public class LogTest {
private static final Logger log = LoggerFactory.getLogger(LogTest.class);
public static void main(String[] args) {
log.info("hello world");
log.warn("hello world");
}
}
実行、コンソール出力
2019-11-20 16:47:15.743 [main] INFO test.LogTest - hello world
2019-11-20 16:47:15.754 [main] WARN test.LogTest - hello world
成功!