2012-07-09 63 views
6

NLog中的FileTarget對象具有名爲「keepFileOpen」的屬性(bool)。 默認情況下,此屬性設置爲false,這意味着每個日誌事件將打開文件,寫入文件並關閉文件。NLog File target和keepFileOpen標誌

在性能方面的打擊是巨大的,所以我指定「keepFileOpen」爲true,而不是false,這意味着該文件將只打開一次。

有沒有人有一個想法(或只是知道)爲什麼這個屬性默認設置爲「false」,導致記錄巨大的性能打擊?

是否有任何情況下將此屬性設置爲true可能會導致問題(因此將其默認爲「false」)會有意義。

謝謝!

EDIT

性能測量爲基本佈局,寫100K事件記錄器:

  • keepFileOpen = false(默認):〜101秒
  • keepFileOpen =真:〜1秒

回答

0

我會嘗試向他們發送一封電子郵件並詢問他們。我無法弄清楚爲什麼這個選項默認爲false。

5

我會說關閉文件是預期的行爲。如果您嘗試從另一個進程訪問該文件或在NLog進程處於活動狀態時將其在文件系統中刪除,則會導致那些令人討厭的系統錯誤,指出某些進程持有文件等。

如果打開一個文件對你來說太長了,嘗試使用AsyncWrapper,你會得到一個「忘卻」的行爲。

因此我認爲默認值是可以的。