【问题标题】:NLOG real time loggingNLOG 实时记录
【发布时间】:2020-03-19 01:11:18
【问题描述】:

如何配置 NLOG 在日志文件中具有实时性? 实时是指执行操作的时间(更准确地说是调用日志方法的时间)。

<target name="file" xsi:type="File"
        layout="${longdate}|${level:uppercase=true}|${logger}|${message}|${exception:format=toString}"
        fileName="D:/Logs/${shortdate}.log" />

{longdate} 似乎是写入日志文件的日期/时间。

【问题讨论】:

  • 您是否启用了 Autoflush?
  • 是什么让你觉得${longdate} 不是“实时”?
  • 也许你可以获得准确度:github.com/nlog/NLog/wiki/Time-Source 如果是这样的话。
  • Autoflush - 根据文档对性能有影响:“在每条日志消息后自动刷新文件缓冲区”。
  • @Irek 嗯,是的,一旦没有记录日志消息就写入日志消息,而不是缓冲它们,会减慢速度。这就是默认情况下不这样做的原因。

标签: c# nlog


【解决方案1】:

当您调用 Logger 时,它将创建一个捕获时间戳的 LogEventInfo 对象。

log.Info("Hello World");   // Captures timestamp

当使用 NLog Layout ${longdate} 时,它将输出捕获的原始时间戳。与 LogEventInfo 到达最终 NLog 目标所需的时间无关,它总是会打印捕获的时间戳。

您遇到的任何精度或延迟问题都可能是由默认时间源引起的:

https://github.com/NLog/NLog/wiki/Time-Source

使用KeepFileOpen=trueConcurrentWrites=false 可以解决您对NLog FileTarget 性能的任何问题:

https://github.com/NLog/NLog/wiki/Performance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多