アーキテクトがラッパー (つまり SLF4J) をラップしたいという欲求の背後にある動機は、アプリケーションを SLF4J から分離することだと思います。明らかに、アプリケーション内から SLF4J API を呼び出すと、SLF4J への依存関係が作成されます。ただし、以下で説明するように、分離の原則を繰り返し適用することも同様に正当です。リチャード・ドーキンスの質問を思い出します: 神が宇宙を創造したのなら、誰が神を創造したのですか?
実際、SLF4J をラップするラッパーに分離原則を適用することもできます。SLF4J-wrapper が何らかの形で SLF4J より劣っている場合、分離の原因は役に立たないでしょう。可能ではありますが、ラッパーがオリジナルと同等またはそれを超えることはかなりまれです。SWT は注目に値する反例として挙げることができます。ただし、SWT はかなりのコストがかかる大規模なプロジェクトです。さらに言えば、定義上、SLF4J ラッパーは SLF4J に依存しています。同じ一般的な API を持つ必要があります。将来、大幅に異なる新しいロギング API が登場した場合、ラッパーを使用するコードを新しい API に移行することは、SLF4J を直接使用するコードと同様に困難になります。したがって、ラッパーはコードの将来性を保証するものではなく、追加の間接化を追加してコードを重くする可能性があります。
要するに、他にやるべきことがなかったとしても、ラッパーの付加価値はほぼゼロであることが保証されているため、SLF4J のラッピングに時間を無駄にするべきではありません。
このトピックは、SLF4J FAQ エントリでも紹介されています。