7

AppenderSkeleton クラスを拡張して、カスタム log4net アペンダーを実装しました。誰もが求めることができるほどシンプルで、完璧に機能します。

私の問題は、いくつかの値をハードコードする必要があり、それらをコードから削除してアペンダーの構成にしたいことです。log4net はどのように構成されているかを知っているので、log4net にその構成を尋ねる方法があるはずです。

私のアペンダーは次のようになります。

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
      <MyProperty1>property</MyProperty1>
      <MyProperty2>property</MyProperty2>
      <MyProperty3>property</MyProperty3>
</appender>

MyProperty1-3 の値を取得して Appender 内で使用できるようにする方法は?

前もって感謝します

4

1 に答える 1

9

タイプによって少し異なりますが、単純なタイプの場合は次のことができます。

次のようにプロパティを定義します。

// the value you assign to the field will be the default value for the property
private TimeSpan flushInterval = new TimeSpan(0, 5, 0);

public TimeSpan FlushInterval
{
     get { return this.flushInterval; }
     set { this.flushInterval = value; }
}

これは、次のように構成できます。

<appender name="MyLogAppender" type="xxx.yyy.zzz.MyLogAppender">
    <flushInterval value="02:45:10" />
</appender>

これは、string、bool、int、および TimeSpan に対して確実に機能します。

注: 設定で何らかのロジックを有効にする必要がある場合 (タイマーの作成など)、これをActivateOptionsメソッドに実装できます。

于 2011-02-22T17:46:30.940 に答える