プログラムでRollingFileAppender Dateのローリングを構成する

StackOverflow https://stackoverflow.com/questions/611483

  •  03-07-2019
  •  | 
  •  

質問

log4netでRollingFileAppenderをプログラムで設定する作業をしています。現在、次のようなものがあります:

RollingFileAppender fa = new RollingFileAppender();
fa.AppendToFile = true;
fa.RollingStyle = RollingFileAppender.RollingMode.Date;
fa.DatePattern = "yyyyMMdd";
fa.StaticLogFileName = true;
// Set more properties and add the appender to the root repository

これは、日付に基づいたログのロールを拒否します。 RollingStyleをSizeまたはCompositeに切り替えた場合、ロールは行われますが、日付ベースではなく、サイズベースのみになります。 StaticLogFileNameを削除して、DatePatternをいじってみましたが無駄になりました。

実行時にアペンダーの数がわからないので、これをプログラムで構成する必要があります。そのため、これまでXMLを使用して構成していましたが、これは過去に使用できました。誰かアイデアはありますか?何か不足していますか?

役に立ちましたか?

解決

この動作は、RollingFileAppender(および他の多くのアペンダーとフィルター)が IOptionHandlerインターフェースは、すべてのオプションが設定されるまでオブジェクトのオプションのアクティブ化を延期します。これは、すべてが設定されるまで曖昧なままになる関連オプションを持つコンポーネントに必要です。

さらに:" ActivateOptions メソッドを呼び出す必要があります。 ActivateOptionsが呼び出されるまで、このオブジェクトは未定義の状態にあるため、使用しないでください。"

xmlファイルを使用してアダプターを構成する場合、log4net configuratorによって行われるため、アクティベーションについて考える必要はありません。

他のヒント

ファイルアペンダーを設定した後、階層にアペンダーを追加する前に、ActivateOptions()の呼び出しを追加しましたが、動作するようです。一部のオプションが電話なしで止まったのに、他のオプションが止まらなかった理由は、別の日の質問です。

scroll top