7

NLogのFileTargetオブジェクトには、「keepFileOpen」というプロパティ(bool)があります。デフォルトでは、このプロパティはfalseに設定されています。これは、各ログイベントがファイルを開き、ファイルに書き込み、ファイルを閉じることを意味します。

パフォーマンスへの影響は非常に大きいため、「keepFileOpen」をfalseではなくtrueに指定しました。これは、ファイルが1回だけ開かれることを意味します。

このプロパティがデフォルトで「false」に設定され、ロギングで大きなパフォーマンスヒットが発生する理由を誰かが知っている(または単に知っている)でしょうか?

このプロパティをtrueに設定すると、問題が発生する可能性があるシナリオはありますか(したがって、デフォルトで「false」に設定するのが理にかなっています)。

ありがとう !

編集

基本レイアウトのパフォーマンス測定、ロガーへの100Kイベントの書き込み:

  • keepFileOpen = false(デフォルト):〜101秒
  • keepFileOpen = true:〜1秒
4

3 に答える 3

7

ファイルを閉じることが予想される動作だと思います。NLogプロセスが動作しているときに、別のプロセスからファイルにアクセスしたり、ファイルシステムでファイルを削除したりしようとすると、システムエラーが発生し、一部のプロセスがファイルを保持しているなどのエラーが発生します。

ファイルを開く時間が長すぎる場合は、AsyncWrapperを使用してみてください。そうすれば、ファイアアンドフォーゲットの動作が得られます。

したがって、デフォルト値は問題ないと思います。

于 2013-05-21T14:11:49.200 に答える
1

私は彼らに電子メールを送ってそれについて彼らに尋ねようとします。このオプションがデフォルトでfalseである理由を理解できません。

于 2012-07-10T14:52:53.413 に答える
0

デフォルト値の「false」は意味がありません。期待される動作は高速で合理的です。

また、keepFileOpenはファイルを保持しないようにする必要があります。これは、FileStreamと呼ばれるフラグがあるためFileShare.ReadWriteです。

于 2019-02-20T02:40:17.613 に答える