SLF4Jを使った例外のログ記録

1概要

このクイックチュートリアルでは、https://www.slf4j.org/[SLF4J]APIを使用してJavaで例外を記録する方法を説明します。ロギングの実装として slf4j-simple APIを使用します。

あなたは私たちのhttps://www.baeldung.com/tag/logging/[前の記事]のうちの1つで異なった伐採技術を探索することができます。

2 Mavenの依存関係

まず、 pom.xml に次の依存関係を追加する必要があります。

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.25</version>
</dependency>

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.25</version>
</dependency>

これらのライブラリの最新バージョンはhttps://search.maven.org/classic/#search%7Cga%7C1%7Cg%3A%22org.slf4j%22%20AND%20(a%3A%22slf4j-apiにあります。 %22%20OR%20a%3A%22slf4j-simple%22)[Maven Central]。

3例

通常、すべての例外はhttps://static.javadoc.io/org.slf4j/slf4j-api/1.7.25/org/slf4j/Logger.html[ Logger ]クラスで使用可能な error() メソッドを使用して記録されます。この方法にはかなりの数のバリエーションがあります。次のことを探ります。

void error(String msg);
void error(String format, Object... arguments);
void error(String msg, Throwable t);

最初に使用する Logger を初期化しましょう。

Logger logger = LoggerFactory.getLogger(NameOfTheClass.class);

エラーメッセージを表示するだけの場合は、次のように単純に追加できます。

logger.error("An exception occurred!");

上記のコードの出力は次のようになります。

ERROR packageName.NameOfTheClass - An exception occurred!

これは十分簡単です。ただし、例外に関するより関連性の高い情報(スタックトレースを含む)を追加するには、次のように記述します。

logger.error("An exception occurred!", new Exception("Custom exception"));

出力は次のようになります。

ERROR packageName.NameOfTheClass - An exception occurred!
java.lang.Exception: Custom exception
  at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)

複数のパラメーターがある場合、ロギング・ステートメントの最後の引数が例外であると、SLF4Jはユーザーが最後の引数を単純なパラメーターではなく例外として扱うことを望んでいると想定します。

logger.error("{}, {}! An exception occurred!",
  "Hello",
  "World",
  new Exception("Custom exception"));

上記のスニペットでは、 String メッセージは渡されたオブジェクトの詳細に基づいてフォーマットされます。メソッドに渡される String パラメータのプレースホルダとして中括弧を使用しました。

この場合、出力は次のようになります。

ERROR packageName.NameOfTheClass - Hello, World! An exception occurred!
java.lang.Exception: Custom exception
  at packageName.NameOfTheClass.methodName(NameOfTheClass.java:lineNo)

4結論

このクイックチュートリアルでは、SLF4J APIを使用して例外を記録する方法を見つけました。

コードスニペットはhttps://github.com/eugenp/tutorials/tree/master/logging-modules/log4j[GitHub repository]にあります。