2011-12-02 8 views
1

ログにlog4jを使用する複数のアプリケーションがあります。クラスパスから読み込まれた別々のlog4j.properties(各ファイルはディスク上のファイル、.jarではなく、それは読み取り専用になります)。これらの各アプリケーションでは、通常のUIを通じてログレベルを更新できるようにしたいと考えています。アプリケーション内でlog4jを更新し、log4j.propertiesを更新しました

私はこれに共通のユーティリティクラスを使用していますが、これはアプリケーション間で共有されています。私はアプリの生涯にわたってそれを行うことができますが、変更は適切なlog4j.propertiesファイルに保存されないため、次回の再起動時にプロパティファイルの特定のレベルにリセットされます。

クラスパスからロードされたばかりなので、各アプリケーションのログファイルへの完全なパスはわかりません。一般的なクラスなので、パスをハードコードしたくありません。 log4jにその変更をディスク上の設定に書き戻す方法はありますか?

答えて

2

私はあなたの頭に問題を反転することをお勧めします。

ディスク上のlog4j.propertiesファイルに変更を書き込んだ後、そのファイルの変更を確認し、適切なログレベルを更新するリスナーをインストールします。

+1

私はアレクサンダーの答えはあなたが得ることができるほど良いかもしれないと思います。あなたが望むものよりも厄介です。 Log4jはPropertyConfiguratorを使用してそのプロパティファイルを読み込みますが、「書き込み」または「出力」メソッドは表示されません。 DOMConfiguratorはXMLバージョンですが、もう一度出力メソッドを見ることはできません。 – davidfrancis

関連する問題