SLF4J および Log4j 2 ロギングメソッドの引数として使用されている文字列テンプレートを報告します。
メソッド org.apache.logging.log4j.Logger.log()
とそのオーバーロードは「すべてのログレベル」オプションでのみサポートされています。
文字列テンプレートは、ロギングメッセージがログに記録されない場合でも実行時に評価されます。そのため、パフォーマンスに否定的な影響を及ぼす可能性があります。
代わりに、ロギングが無効な場合には評価されないパラメーター化されたログメッセージを使用することをお勧めします。
例 (Kotlin の場合):
val variable1 = getVariable()
logger.info("variable1: $variable1")
クイックフィックス適用後 (Kotlin の場合):
val variable1 = getVariable()
logger.info("variable1: {}", variable1)
提案される置換は、元のコードと同等ではない場合があることに注意してください。たとえば、文字列テンプレートにメソッド呼び出しまたは引数式が含まれている場合が挙げられます。
-
特定のより高いロギングレベルを無視するには、警告対象 リストを使用します。 より高いロギングレベルは常に有効にできます。また、引数は常に評価されます。
-
プリミティブ型、それらのラッパー、または文字列を持つ式のみが含まれる文字列テンプレートを無視するには、「プリミティブ型、それらのラッパー、または文字列を持つ式のみが含まれている場合は警告しない」オプションを使用します。
このオプションは、コレクションの遅延読み込みを防ぐ場合などに役立つ場合があります。
プリミティブ型、それらのラッパー、または文字列を持つ式のみが含まれている文字列を実行時に作成すると、パフォーマンスに否定的な影響を及ぼす可能性があることに注意してください。
-
Use the Do not warn when call only with an exception as argument after message argument option to ignore
calls, which contain only exception as an argument after message argument.
For example, it could be useful to adjust the inspection's behaviour with a custom code style.
2023.1 の新機能です