Slf4j-parameterized-logging
SLF4J-パラメーター化されたロギング
このチュートリアルで前述したように、SLF4Jはパラメーター化されたログメッセージのサポートを提供します。
メッセージでパラメーターを使用し、後で同じステートメントで値を渡すことができます。
構文
以下に示すように、メッセージ(文字列)で必要な場所でプレースホルダー(\ {})を使用する必要があり、後で object 形式でプレースホルダーの値を渡すことができます。
例
次の例は、SLF4Jを使用したパラメーター化されたロギング(単一パラメーター)を示しています。
出力
実行時に、上記のプログラムは次の出力を生成します-
パラメータ化されたロギングの利点
Javaでは、ステートメントに値を出力する必要がある場合、連結演算子を次のように使用します-
これには、整数値23の文字列への変換と、この値を周囲の文字列への連結が含まれます。
それがロギングステートメントであり、ステートメントの特定のログレベルが無効になっている場合、この計算はすべて役に立ちません。
このような状況では、パラメーター化されたログを使用できます。 この形式では、最初にSLF4Jは特定のレベルのロギングが有効になっているかどうかを確認します。 その場合、メッセージのプレースホルダーをそれぞれの値に置き換えます。
たとえば、次のようなステートメントがある場合
デバッグが有効になっている場合にのみ、SLF4Jは年齢を整数に変換し、それ以外の場合は文字列と連結します。 したがって、ロギングレベルが無効になっている場合、パラメーター構築のコストが発生します。
2つの引数のバリアント
また、メッセージで2つのパラメータを使用することができます-
例
次の例は、パラメーター化されたロギングでの2つのプレースホルダーの使用方法を示しています。
出力
実行すると、上記のプログラムは次の出力を生成します。
複数引数バリアント
また、次の例に示すように3つ以上のプレースホルダーを使用することができます-
出力
実行時に、上記のプログラムは次の出力を生成します-