Lazy Diary @ Hatena Blog

PowerShell / Java / miscellaneous things about software development, Tips & Gochas. CC BY-SA 4.0/Apache License 2.0

VB.NETのMy.Application.Logにはログローテーション機能がない

.NETでは標準でロガーインタフェース(ILogger)が定義されている。処理系組込みの実装としてConsole, Debug, EventSource, EventLogがある*1が、ローカルストレージ上のファイルにログを出力する実装はデフォルトでは提供されていない。

一方で、VB.NETには同梱のILogger実装(My.Application.Log)がある*2。この実装はファイルにログを出力することができ、日付ごとにファイルを分けたり、ディスクの空き容量が一定以下にならないようにしたりと器用なことができるが、実はローテーション機能がない。

WindowsにはOS組込みのログローテーション機能(logrotated)もないので、ローテーションを行いたければNLog*3log4net*4を使うか、logrotatedの同等品を導入するしかない。Apache同梱のrotatelogsはログをパイプに通す必要があるから、もしかしたらConsoleと組み合わせたら使えるかな?