7

Google guice には組み込みのロガー バインディングがあります。しかし、commons-logging または log4j ロガーを使用したい場合はどうすればよいでしょうか?

によって作成されたログを挿入するためのガイダンスを取得できますか

LogFactory.getLog(CLASS.class)

ただし、組み込みバインディングと同じ動作をします。

バインディングは、ロガーの名前を、ロガーが注入されるクラスの名前に自動的に設定します。


それは理にかなっていますか?それとも、組み込みの Java Logger を使用するだけですか? それとも、インジェクションなしで commons-logging を使用しますか?

4

4 に答える 4

11

Guice wikiのCustomInjectionsページには、注入先のクラスによって名前が付けられたロガーを注入する方法が正確に説明されています。

于 2010-04-09T08:38:46.873 に答える
1

それはあなたの選択です。logbackwikiで詳しく説明されている方法を使用して、Guiceでうまく使用しました。

sli4jプロジェクトを見てください。役に立つかもしれません。

于 2010-04-09T05:40:10.900 に答える
0

Guice は、インターフェイスのさまざまな実装を注入するのに非常に役立ちます。さまざまなロギングの実装にはすべて異なる API があるため、ここでは当てはまりません。

インターフェイスに対して開発しているときに、後で実際のログ実装を交換できるようにしたい場合は、commons loggingまたはslf4jを使用します。

于 2010-04-09T05:44:29.043 に答える
0

提供されたロガーをオーバーライドすることはできませんがjava.util.logging.Logger、他のクラスと同じように新しいロガーをバインドします。

bind(Log.class).to(LogFactory.getLog(YourClass)); // or toInstance(...);

ただし、名前付きロガーを作成するのは少し難しくなります。

Google Guice コード ( u til.BinderImpl.java:87 ) を掘り下げると、注入されたロガーの各インスタンスに個別のクラス名を割り当てる方法を確認できます。ただし、簡単に再現できるかどうかを知るのに十分なほど注意深く検査していません。

名前付きロガーを提供できるように、何らかの形でコンテキストにアクセスできるプロバイダーを作成するか、ファクトリーを注入することが可能かもしれません。

于 2010-04-09T06:13:43.503 に答える