LOG.debug("Exported {}.", product)
slf4jのようなことをすると、最終的に引数に対して toString() が呼び出されproduct
ます。
特定の理由により、引数として使用したいすべてのクラスで toString() をオーバーライドすることはできません。一部のクラスはサードパーティの jar から取得されますが、他のコンテキストでは toString() が呼び出されるため、ログ ステートメントに出力したい情報が利用できません。
DebugFormatter.format(Object)
ただし、オブジェクトに関する有用なデバッグ情報を見つけるためにルーチンを選択する instanceofs の長いカスケードを持つメソッドを持つデバッグ目的のクラスがあります。
私の質問は: toString() の代わりにそのような静的メソッドを呼び出すように slf4j を構成することは可能ですか?
もちろん、オブジェクトをパラメーターとして渡す前に、オブジェクトで format メソッドを呼び出すこともできますLogger.debug()
が、それぞれのロガーが有効になっていない場合でも実行されます。だから私はそれを囲む必要がありましif (LOG.isDebugEnabled())
た。これは、debug() に引数を持つという全体のポイントが失われたことを意味します。