2012-05-08 8 views
2

jarファイルは独自のlogbackログ設定で配信したいと思います。 ログバックを設定する一般的な方法は、logbackライブラリがクラスパスのルートから読み込むデフォルトのファイルlogback.xml(アプリケーションサーバで動作するかどうか)です。jarごとのログバック設定ファイル

includeメインログバック設定ファイルの別のファイル(試していない)がありますが、どのジャーがクラスパスにあり、どのジャーがログ設定を必要としているのかわかりません。

さらに、jarはコマンドラインアプリケーションまたはアプリケーションサーバー(共有ライブラリかどうか)で使用できます。

私はjarファイルパスを取得し、そこに設定ファイルがあるかどうかをチェックし、設定をプログラムで読み込み、JoranConfiguratorで読み込もうとしたと考えました。

// This is the way I find to get the path to the jar 
String path = ClassThatWantsALogger.class.getProtectionDomain().getCodeSource() 
      .getLocation().getPath(); 
String decodedPath = URLDecoder.decode(path, "UTF-8");// the path to the jar 

しかし、セキュリティの制限に依存するため、Linuxやアプリケーションサーバーではこの方法が失敗する可能性があります。これはおそらくよりよい解決策を持つ問題の難しいアプローチです。

あなたは、どのような環境でも動作する独自のログバック設定ファイルをjarファイルが持つことができると考えていますか?

答えて

2

私はcite myselfあなたの質問に答えます:ログ設定は、クライアントアプリケーションの懸案事項(懸念の分離)です。どこで、どのように、そして何が記録されるのかは彼の決定です。あなたは私たちの図書館でそれに何かを課してはならない。

+3

私が働く組織では、共通の機能と他のアプリケーションへのコネクタを備えた他のチームにライブラリを提供する必要があります。これらのライブラリをどこに記録するかを決定することは私の懸念事項です。これらのチームに、ログバック設定ファイルに特定の設定を追加する必要があるかどうかを尋ねなければならない場合は、間違いを犯したり、要求したものを忘れたり誤ったりする可能性があります。さらに、これらのライブラリのログ設定を変更したい場合は、これらのチームにログバック設定ファイルを変更するように要求する必要があります。また、通常は生産環境でこれを変更するアクセス権がありません。 –

+3

ライブラリを提供しても問題ありません。これは私がやっていることです。ターゲット環境を認識していない一般的な図書館をコーディングすると、それはあなたの懸念事項となりますか? これを申し訳なく思っていますが、あなたの会社のコンセプトはちょっと思いがけないものです。これは、ログ記録の設定を意図したものではありません。あなたができることは、 'com/company/package/logback.xml'にconfファイルを用意し、そのファイルを' 'でターゲット環境に組み込むことだけです。 –

関連する問題