c# - NLog:为什么 BufferingWrapper 似乎没有缓冲日志条目
问题描述
我有一个简单的 .Net 核心 (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
。
谢谢你的帮助
解决方案
使用目标包装器时,应该写入目标包装器,而不是实际目标。
像这样的东西:
<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。
推荐阅读
- python - 如何在 sklearn 中为算法使用 sample_weight 参数
- node.js - 在节点 js 服务器中部署我的 Angular 应用程序的问题
- c# - 从 C# 调用 Azure powershell cmdlet
- python - 每天查找唯一的时间戳
- python - 使用 BeautifulSoup 和 Python 提取 iframe
- javascript - jQuery css() 函数不适用于 css 属性列(动态内容)
- r - 有人可以解释 ggplot 和 geom_point 之间的区别吗?
- verilog - 如何修复在verilog中分配多个值错误?
- excel - Excel 连接到 Oracle 数据库
- php - PhpStorm 警告“预期类,得到类 []”