当我在 NLog 的配置文件中设置 async=true
时,我对 NLog 的行为有点困惑。
- 日志文件中的时间戳是调用
logger.Debug/Error/Info/Trace
时的时间,还是日志从缓冲区写入文件的时间系统? - 回答 Nlog Async and Log Sequence提到异步开启时无法保证日志序列的顺序,是这样吗?
- 如果设置
async=true
,对性能测试时的结果有影响吗?
最佳答案
根据NLog来源:https://github.com/NLog/NLog/blob/master/src/NLog/Logger.cs LogEventInfo 对象在日志记录调用时创建(并在该点带有时间戳)。然后,LogEventInfo 对象的写入会异步写入适当的目标。因此,日志文件中的时间戳应该代表日志记录调用本身的时间戳,而不是日志信息写入日志文件的时间。
我没有任何内容可以添加到链接的答案中。我会说xharze从事NLog开发,应该知道自己在说什么。
我的第一个猜测是,设置
async=true
会提高应用程序在日志记录方面的性能,因为应用程序在继续执行之前不必等待日志记录请求完成。
关于c# - 当异步开启时,nlog 中的时间戳有何含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23149142/