NLog:为什么BufferingWrapper似乎不缓冲日志条目

时间:2019-12-18 09:48:04

标签: c# .net-core nlog nlog-configuration

我有一个简单的.Net core(2.2)控制台应用程序。 我正在尝试将其配置为与NLog一起使用。 为简单起见,我使用“文件”目标。 我正在尝试配置缓冲包装器,因此我将目标包装如下:

<target name="bufferWrapper" xsi:type="BufferingWrapper" bufferSize="100">
   <target name="logfile" xsi:type="File" fileName="file.txt" />
</target>

当我在写入Nlog之后立即在断点处停止调试模式时:

Logger.Info("Hello world");

我看到日志条目已经添加到“ file.txt”中。 我希望它仅在累积100个日志条目(如bufferSize=100)后才将条目刷新到文件中。

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

使用目标包装器时,应写入目标包装器,而不是实际目标。

类似这样的东西:

cap = cv2.VideoCapture("c:/fullpath/filename.png")

顺便说一句。 BufferingWrapper是一种用于延迟(甚至丢弃)日志事件的调节机制。如果性能很重要,则应该直接使用<nlog> <targets> <target name="bufferWrapper" xsi:type="BufferingWrapper" bufferSize="100"> <target name="logfile" xsi:type="File" fileName="file.txt" /> </target> </targets> <rules> <logger name="*" writeTo="bufferWrapper" /> <!-- Do not write directly to logfile --> </rules> </nlog> 或AsyncWrapper。