我有类似这样的调用结构:
程序-calls-> Service1.Function1 -calls-> Service2.Function2 -calls-> HTTP 调用
最后有一个 HTTP 调用,所以我所有的调用都是通过 async/await 进行的。
这是一个例子:
async function1()
{
logger.Info("START Function1 with parameters xy");
logger.Info("CALL Function2 with parameters xy");
await Service2.Function2();
logger.Info("RET Function2 with parameters xy");
logger.Info("END Function1 with parameters xy");
}
async function2()
{
logger.Info("START Function1 with parameters xy");
await HTTPClient.Call();
logger.Info("END Function1 with parameters xy");
}
使用 NLog 我得到这个日志
2021-11-04 14:44:12.6996|INFO |Service1.Function1 : START Function1 with Parameters: xy
2021-11-04 14:44:12.6996|INFO |Service1.Function1 : CALL Function2 with Parameters: xy
2021-11-04 14:44:12.6996|INFO |Service2.Function2 : START Function2 with Parameters: xy
2021-11-04 14:44:17.7004|ERROR|Service2.Function2 : A task was canceled.
如果您查看时间戳,它始终显示完全相同的时间戳,直到进行等待的 HTTP 调用。我认为这与异步(async/await)结构有关。我如何启用“真实”时间戳?
最佳答案
没有代码就不太清楚(如何在 async/await 之间登录)。
但你可能想要
<time type="AccurateUTC" />
在 nlog.config 中。
关于c# - 使用任务时的 Nlog 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69882145/