1

RollingFileAppenderを拡張して、ログシステムにメッセージが届かない場合でも回転するようにしようとしています。通常、rollOverメソッドは、メッセージが到着し、回転をトリガーするために時間チェックが行われるときに呼び出されます。

私のバージョンのRollingFileAppenderは、x秒ごとにrollOverを呼び出すため、メッセージが到着しない場合でもローテーションが保証されます。

今私の問題は、RollingFileAppenderrollOverにモディファイアなしのアクセスレベルモディファイアがあることです。したがって、私が望むようにx秒ごとに呼び出すことはできません。

  /**
     Rollover the current file to a new file.
  */
  void rollOver() throws IOException {

コードを見ると、なぜモディファイアが必要ないのか理解できず、クラスをパッケージに入れてrollOverを呼び出すことにしました。

これは汚い感じです。rollOverを呼び出したい場合、他に選択肢はありますか?

4

1 に答える 1

1

もちろん、リフレクションを使用してそれを行うことができます。

トランクまたはタグ 1.2.15 から抽出されたソース コード: Apache の svn

public // synchronization not necessary since doAppend is alreasy synched
void rollOver() {
  File target;
  ...

log4j-1.2.15 という同じことについて話しますか?

于 2009-03-26T14:39:49.343 に答える