Logger slf4j 文字列連結の代わりに {} を使用してフォーマットする利点 質問する

Logger slf4j 文字列連結の代わりに {} を使用してフォーマットする利点 質問する

{}文字列連結の代わりにを使用する利点はありますか?

slf4jからの例

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);

の代わりに

logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);

設定ファイルによっては、実行時にパラメータ評価 (および文字列の連結) を回避できるため、速度の最適化が目的だと思います。ただし、パラメータは 2 つしか使用できないため、文字列の連結以外の選択肢がない場合もあります。この問題に関する意見が必要です。

ベストアンサー1

それ文字列連結のパフォーマンスについて。ログ記録ステートメントが密集している場合は、これが重要になる可能性があります。

(SLF4J 1.7以前) ただし、パラメータは2つしか使用できません

ログ記録ステートメントの大部分は 2 個以下のパラメータを持つため、バージョン 1.6 までの SLF4J API は、ほとんどのユースケースをカバーします (のみ)。API 設計者は、API バージョン 1.7 以降、varargs パラメータを持つオーバーロード メソッドを提供しています。

2 つ以上が必要で、1.7 より前の SLF4J を使用している場合は、文字列連結または を使用しますnew Object[] { param1, param2, param3, ... }。それらの数は少なくなるため、パフォーマンスはそれほど重要ではありません。

おすすめ記事