【发布时间】:2017-10-27 15:00:38
【问题描述】:
我想通过 NLog 实现以下滚动文件的行为:
1.防止在启动新文件时重命名或移动文件,以及
2. 限制旧日志文件的总数或大小,以避免随着时间的推移出现容量问题
可以实现第一个要求,例如通过在文件名中添加像 ${shortdate} 这样的时间戳。示例:
logs\trace2017-10-27.log <-- today's log file to write
logs\trace2017-10-26.log
logs\trace2017-10-25.log
logs\trace2017-10-24.log <-- keep only the last 2 files, so delete this one
但根据其他帖子,文件名中的日期和maxArchiveFiles 等存档参数不能一起使用。如果我使用maxArchiveFiles,我必须保持日志文件名不变:
logs\trace.log <-- today's log file to write
logs\archive\trace2017-10-26.log
logs\archive\trace2017-10-25.log
logs\archive\trace2017-10-24.log <-- keep only the last 2 files, so delete this one
但在这种情况下,每天第一次写入时,它会将昨天的跟踪移动到存档并启动一个新文件。
我想阻止移动跟踪文件的原因是因为我们使用 Splunk 日志监视器来监视日志文件夹中的文件以进行更新、读取新行并提供给 Splunk。
我担心的是,如果我在 23:59:59.567 写入了一个事件,那么 00:00:00.002 的下一个事件会在日志监视器能够在那几分之一秒内读取之前清除之前的内容。
老实说,我没有测试过这个场景,因为我的团队不拥有 Splunk 等,因此设置起来会很复杂 - 所以如果这不能发生,请纠正我。
另外请注意,我知道可以通过网络连接等其他方式直接为 Splunk 提供数据,但我们公司的 Splunk 当前设置是从日志文件中读取,所以这样会更容易。
知道如何用 NLog 解决这个问题吗?
【问题讨论】: