NLog:为什么 BufferingWrapper 似乎没有缓冲日志条目
NLog: Why BufferingWrapper does not seem to buffer log entries
我有一个简单的 .Net 核心 (2.2) 控制台应用程序。
我正在尝试将其配置为与 NLog 一起使用。
为简单起见,我使用 "File" 目标。
我正在尝试配置缓冲包装器,因此我按如下方式包装了目标:
<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
)。
感谢您的帮助
使用目标包装器时,应写入目标包装器,而不是实际目标。
像这样:
<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>
顺便说一句。 BufferingWrapper 是一种用于延迟(甚至丢弃)日志事件的节流机制。如果性能很重要,那么应该直接使用 <targets async="true">
或 AsyncWrapper。
我有一个简单的 .Net 核心 (2.2) 控制台应用程序。 我正在尝试将其配置为与 NLog 一起使用。 为简单起见,我使用 "File" 目标。 我正在尝试配置缓冲包装器,因此我按如下方式包装了目标:
<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
)。
感谢您的帮助
使用目标包装器时,应写入目标包装器,而不是实际目标。
像这样:
<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>
顺便说一句。 BufferingWrapper 是一种用于延迟(甚至丢弃)日志事件的节流机制。如果性能很重要,那么应该直接使用 <targets async="true">
或 AsyncWrapper。