12

5つの異なるプロセスから同じログファイルに書き込むことは可能ですか?

ロギングにLog4Netを使用していますが、ファイルに書き込んでいるプロセスは1つだけのようです。このプロセスをシャットダウンすると、2番目のプロセスが書き込みを行っています。

みんなで一緒に書いて欲しいです。

方法?

4

2 に答える 2

19

複数のプロセスから単一のファイルに書き込みたい場合は、ノードにMinimalLockasLockinModelを追加します。<appender>

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

これはパフォーマンスにいくらかの影響を与えることに注意してください。

于 2012-10-06T20:13:04.163 に答える
5

@Erwinのアドバイスはほとんどの場合有効ですが、より優れたアーキテクチャがパフォーマンスの向上に役立つかどうかを再検討する必要があります。

たとえば、Microsoft IISサーバーでは多くのワーカープロセスが実行されており、それぞれが名前付きパイプを介してログエントリをIISサービスプロセスに送信します。また、IISサービスプロセスのみがログファイルに書き込む権利を持っています。このように、ワーカープロセスはログファイルをロックする必要がなく、サービスプロセスはエントリをキャッシュしてバッチで書き込むことができます。

IISのアプローチに従い、優れたパフォーマンスを実現するのは非常に簡単です。ファイルロックなし。

(更新:UDPに基づくそのようなアーキテクチャを実装するLogMaster4Netを使用できるようになりました。)

于 2012-10-07T01:48:48.257 に答える