2009-08-10 12 views
2

私はカスタムlog4jアペンダーを書いています。私の(データベース)アペンダーが失敗した場合に備えて、別の構成済みアペンダーをフォールバックとして頼りにしたいと思います。log4jアペンダー間の依存性

アペンダーの構築順序をどのように保証できますか?私のアペンダーのactivateOptions()メソッドは、別のアペンダーにアクセスしようとしますが、それはまだ構築/登録されていないので失敗します。

答えて

1

2番目のアペンダの設定オプションをカスタムアペンダの設定に移動/コピーし、2番目のアペンダを自分のカスタムアペンダの内側に作成することをお勧めします。

+0

うわー、あなたの答えは別の質問に向けられているようです。 はい、私はアペンダーが神秘的ではないことを知っています。 はい、私は設定がsetters/gettersにマッピングされていることを知っています(そして、私はC#のプロパティ、BTWを逃しています)。 私は、異なるロガー間の依存関係についてです。あなたの答えはどのように関係していますか? – ripper234

+0

ストライキ - _loggers_ではなく、異なる_appenders_間の依存関係。 – ripper234

+0

固定。私はそれが私のテキストを読むのが少し難しいと思う。 –

0

あなたが望むことをする方法がないことが判明した場合は、「フォールバック」アペンダーをlog4jに設定するのではなく、「プライマリ」アペンダーから作成して設定することができます。非常に素晴らしい解決策ではありませんが、そうでなければアペンダー間の依存関係を追加する方法はわかりません。

1

XMLで設定ファイルを使用している場合、XMLファイル内のアペンダーの宣言の順序が重要であるという事実を利用できます。最初に宣言されたアペンダが最初に設定されます。 .properties形式の構成ファイルを使用している場合、構成の順序は、loggers a.k.a.カテゴリによって参照される順序によって異なります。最初に参照するアペンダが最初に設定されます。

ログバック、log4jの後継についてもよく分かりますが、これについては十分に文書化されています。

関連する問題