NLog中的FileTarget对象具有名为"keepFileOpen"的属性(bool).默认情况下,此属性设置为false,这意味着每个日志事件将打开文件,写入文件并关闭文件.
性能上的打击是巨大的,所以我将"keepFileOpen"指定为true而不是false,这意味着该文件只会打开一次.
是否有人有想法(或只知道)为什么默认情况下将此属性设置为"false",从而在日志记录中产生巨大的性能损失?
是否存在将此属性设置为true的情况会导致问题(因此将其默认为"false"是有意义的).
谢谢 !
编辑
基本布局的性能测量,将100K事件写入记录器:
我会说关闭文件是预期的行为.如果您尝试从另一个进程访问该文件或在NLog进程处于活动状态时将其删除到文件系统中,则会导致那些令人讨厌的系统错误,说某些进程保存文件等.
如果打开文件的时间对你来说太长,请尝试使用AsyncWrapper,你会得到一个"忘不了"的行为.
因此我认为默认值是可以的.