NLog v2中的AsyncWrapper和BufferingWrapper有什么区别?

zam*_*6ak 6 c# logging nlog

当我注意到以下目标配置时,我正在查看NLog的一些最佳实践:

<targets async="true">
  <default-wrapper xsi:type="BufferingWrapper" bufferSize="100"/>
  <target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log" layout="${longdate} ${uppercase:${level}} ${message}" />
  <!-- other stuff -->
</targets>
Run Code Online (Sandbox Code Playgroud)

根据我的理解,它使用AsyncWrapper和BufferingWrapper包装文件目标...

两者有什么区别?我是否需要两者,因为NLog网站将两者都描述为"缓冲"....

Juh*_*äki 5

一旦缓冲区中有足够的消息(由 bu​​fferSize 参数指定),BufferingWrapper 将阻塞并将消息写入其目标。调用者将需要等到写入完成。

AsynWrapper 使用单独的线程来处理写入。调用立即返回,调用者可以继续其工作,稍后写入日志。