私は常に次のパターンを使用して(SLF4J)ロガーを作成しました。
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
これはこれまでのところうまくいきましたが、static
ある時点でコンテキストと、次のような非静的ロガーを使用するのではなく、常に具象クラスリテラルを渡す必要があるのではないかと考えていました。
private final Logger log = LoggerFactory.getLogger(getClass());
これは基本的に、LOG4Jについてここまでに質問(および回答)されています
そしてここ
基本的に必須であることに気付いfinal
たので、非静的コンテキストでSLF4Jを使用するオーバーヘッドが実際にどれほど高いのか疑問に思います。
Q:
使用することの重要な実際的なオーバーヘッドはありますか
private final Logger log = LoggerFactory.getLogger(getClass());
以上
private static final Logger log = LoggerFactory.getLogger(MyClass.class);
平均的な(ウェブ)アプリでは?(ここでハイエンドで高負荷のWebアプリについて「議論」する必要はありません)
注意してください、私は最終的に、CDIを使用してさらに優れたアプローチを使用して、次のようなSLF4Jロガーを取得することを計画しています。
@Inject private final Logger log;
ここで説明されているようにhttp://www.seamframework.org/Weld/PortableExtensionsPackage#H-TtLoggerttInjectionですが、最初にロガーキャッシングについて知る必要があります。
サブ質問:使用することも可能ですか?:
@Inject private static final Logger log;
(正直に言うと、CDIから始めたばかりです)