2007年11月15日木曜日

[.NET]log4netのFileAppender

log4netのFileAppenderはログファイルを排他モードでオープンします。
今回同一のファイルに対して複数のプロセスから同時に同じログファイルを出力する必要があるので、仕方なくファイルオープン周りの処理をカスタマイズするために調査してみました。
いざ実装しようとすると、それらしいモードが選択出来そうなコードが。。。でマニュアルを調べてみると設定ファイルに記載すれば済みそうなことがわかりました。
log4net(1.2.x)では定義ファイルに以下の一行を入れれば共有モードになります。

<lockingmodel type="log4net.Appender.FileAppender+MinimalLock"/>


「FileAppender+MinimalLock」で「FileAppenderの内部クラスMinimalLock」って表現するっぽいです。ちょっと微妙。
今回はコードからマニュアルを見る方向に行きました。しかし英語のマニュアルなので、読むのがつらい。と思いがちですがほとんど実例が載っています。先に読むクセを付けないと。。。
しかしこのMinimalLock多数のプロセスからの出力は考慮されていない感じな実装に見えました。今はごまかせてるっぽいのでいいですが、折を見てプロセス間共有可能な実装にカスタマイズする予定です。System.Threading.Mutexあたりを利用すれば実現できそうな予感が。。。

0 件のコメント :