web-dev-qa-db-ja.com

Javaライブラリのロガー

さまざまなアプリケーションで使用するさまざまな関数を集めたライブラリを書いています。ライブラリのユーザーに表示されるログステートメントを生成します。つまり、アプリケーションを構築していて、ライブラリを使用している場合、ライブラリに表示されるログステートメントを生成します。それ、どうやったら出来るの?ログファイルはアプリケーションの開発者によって設定されるため、私のライブラリはどのようにログを記録する方法を知るのですか?

27
João Daniel

libraryを開発している場合、他の人がアプリケーションに含めるため、logging facadeを使用する必要があります。それ以外の場合は、ライブラリのユーザーに、選択したロギングフレームワークの構成とインクルードを強制しますフレームワークに加えてアプリケーションに選択します。

たとえば、log4jを使用しているが、ライブラリを使用する開発者がlogbackを使用している場合、log4j構成ファイルとlog4j jarを含める必要があります(または その他の対策を講じる必要があります) )あなたのライブラリを幸せにするために。

Logging Facadeはこの問題を解決します(Apache Commons Loggingから):

ライブラリを作成する場合、情報をログに記録すると非常に役立ちます。ただし、そこには多くのロギング実装があり、ライブラリは、ライブラリが含まれているアプリケーション全体に特定のロギング実装を使用することを強制できません。

Loggingパッケージは、異なるロギング実装間の超薄型ブリッジです。 commons-logging APIを使用するライブラリは、実行時に任意のロギング実装で使用できます。 Commons-loggingは、多くの一般的なロギング実装のサポートを備えており、他の人のためのアダプターの作成はかなり簡単なタスクです。

またはSLF4Jからの推論:

Javaまたは(SLF4J)のシンプルなロギングファサードは、Java.util.logging、log4j、logbackなどのさまざまなロギングフレームワークのシンプルなファサードまたは抽象化として機能し、エンドユーザーがdeployment時に必要なロギングフレームワーク。

ファサードのロギングの候補者は次のとおりです。

個人的には SLF4J (- Logback を使用)をお勧めします。

27
Joe23

これに対する標準的な解決策は次のとおりです。

これらのすべてを使用すると、構成を通じてログファイルの場所を構成できます。

3
nwinkler

ログファイルの場所は、ログフレームワーク構成で、パッケージの外部に設定されます。構成ファイルは通常、クラスパスにあります。どのように見えるかは、使用するロギングフレームワークによって異なります。 SLF4J および Logback を使用することをお勧めします。

2
Rostislav Matl