Log4net(6) RollingFileAppender 意味不明パラメータ:CountDirection

もうね、Log4net のネーミングセンスは非常に奥ゆかしいものがあるのだが、特にこれはすごい。奥ゆかしすぎて、おかしいぐらいだ。
まぁそれはともかく、このプロパティの意味は

  • ログファイルのローテーション時、ローテーションするファイル数が上限を超えた場合に序数をインクリメントし続けるか、バックアップログファイルをシフトするか

である。
プロパティとしてセットする値は、負の数か、0以上の整数か、で、数値の大きさは意味をもたず、boolean 的に動作する。
このプロパティ、名前もさることながら、受け取る値からして、めちゃくちゃ変なのだが、誰も不思議に思わなかったのだろうか・・。

んで、具体例を示すと、


File = "hoge.log"
MaxSizeRollBackups = 2;

として、ログを出し続けると、いずれ


hoge.log
hoge.log.1
hoge.log.2
とログファイルが出力される。んで、さらにログファイルを出力し続けると、またローテーションが発生するのだが、

  • CountDirection = -1 の場合のローテーション


hoge.log -> hoge.log.1
hoge.log.1 -> hoge.log.2
hoge.log.2 -> 削除
hoge.log -> 新規作成
となり、結果

hoge.log
hoge.log.1
hoge.log.2
というログファイルが残る。

  • CountDirection = 1 の場合のローテーション


hoge.log -> hoge.log.3
hoge.log.1 -> 削除
hoge.log.2 -> そのまま
hoge.log -> 新規作成
となり、結果

hoge.log
hoge.log.2
hoge.log.3
というログファイルが残る。

これでわかるかしら??

  • パフォーマンス

当然、CountDirection=1 の方がログファイルのmoveが減るので、パフォーマンスはこちらの方がよい。MaxSizeRollBackups が大きければ大きい程、効いてくる。MaxSizeRollBackups = 8 の時で、13%ぐらいの性能差がありました。

  • ネーミング

私としては、このプロパティ名を「bReuseBackupLog」というのにして、boolean を受け取るようにすればわかりやすくなるんでは?と思ってるけど、、

# えーっと、なんでこんなにはてなの日記は見にくくなるの?誰かもっときれいなレイアウトで書ける方法を教えて・・