2012-04-20 8 views
15

IはLogger.getLogger(className)とLogFactory.getLog(className)の違いは?

1のパッケージの違いを知っている)org.apache.log4j.Logger logger = Logger.getLogger(clazz);

2)org.apache.commons.logging.Log log = LogFactory.getLog(clazz);

最初のものは、log4j介しロガーを使用し、もう一つはcommons.loggingを使用します。いくつかのクラスでロガーがlog4j、場合によってはcommons.loggingを使用して設定されている巨大なプロジェクトがあります。

私はlog4jプロパティファイルを見つけました。commons.loggingの同様のプロパティファイルがありますか?コモンズロギングはどこで設定しますか? commons-loggingによって生成されたログを見ることができません。

何か助けていただければ幸いです。

+2

Commons loggingは他のロギングライブラリをラップします。 log4jを使用している場合は、その設定ファイルを使用します。 –

+0

Commons-Loggingは内部的にLog4jを使用しますか?あなたが意味することを説明してください。私はこれについてほとんど考えていません。 –

+0

commons-logging.propertiesファイル – Satya

答えて

9

はい、コモンズ・ロギングは根本的なログフレームワークからあなた抽象化するためには、コードに触れることなく一方から他方へ切り替えることができるように(実際にはjava.util.loggingの間の選択があった)としたファサードのAPIである - ちょうどCLASSPATH上で利用可能なライブラリを切り替えることによって実現できます。

いくつかの設計ミスのために、アプリケーションサーバーのような複雑なクラスローディング環境で問題が発生しました。現在、それは効果的にに取って代わります。

あなたのケースでは、commons-loggingが(おそらく)log4Jに委任する場合でも、Log4Jまたはcommons-loggingのいずれかのAPIを使用することをお勧めします。 SLF4Jを使用して移行し、ブリッジングAPIをインストールすることもできますが、これは少し高度です。

+0

私はあなたが威圧されていないことを意味すると思います...抑圧されません。 –

+1

@Tomasz Nurkiewicz:log4jで設定されたロガーを見ることができますが、コモンズロギングからのロガーは生成されません。あなたが考えるいくつかの構成上の問題? –

+0

@StephenC:もちろん、ありがとう! –

関連する問題