NLog File目标和keepFileOpen标志

dar*_*key 6 c# nlog

NLog中的FileTarget对象具有名为"keepFileOpen"的属性(bool).默认情况下,此属性设置为false,这意味着每个日志事件将打开文件,写入文件并关闭文件.

性能上的打击是巨大的,所以我将"keepFileOpen"指定为true而不是false,这意味着该文件只会打开一次.

是否有人有想法(或只知道)为什么默认情况下将此属性设置为"false",从而在日志记录中产生巨大的性能损失?

是否存在将此属性设置为true的情况会导致问题(因此将其默认为"false"是有意义的).

谢谢 !

编辑

基本布局的性能测量,将100K事件写入记录器:

  • keepFileOpen = false(默认值):~101秒
  • keepFileOpen = true:~1秒

Ale*_*idt 6

我会说关闭文件是预期的行为.如果您尝试从另一个进程访问该文件或在NLog进程处于活动状态时将其删除到文件系统中,则会导致那些令人讨厌的系统错误,说某些进程保存文件等.

如果打开文件的时间对你来说太长,请尝试使用AsyncWrapper,你会得到一个"忘不了"的行为.

因此我认为默认值是可以的.


Sim*_*mon 2

我会尝试给他们发一封电子邮件并询问他们。我无法弄清楚该选项默认为 false 的任何原因。