c# - 使用任务时的 Nlog 时间戳

标签 c# asynchronous nlog

我有类似这样的调用结构:

程序-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 中。

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

关于c# - 使用任务时的 Nlog 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69882145/

相关文章:

c# - 通过WCF向服务器发送NLog日志

nlog - nlog 中的时间差

javascript - 使用 Application Insights 配置 NLog 和 JS 异常

c# - RavenDB 为日历应用程序建模

c# - 使用Xamarin表单选择产品时如何显示产品详细信息

java - 非阻塞异步 mongo java/scala 驱动程序可以阻塞线程——如何处理?

javascript - 如何访问 async.parallel 的结果?

c# - 如何在多个 Linq IQueryable 上执行 sql Union

C# Process.Start 参数被截断

node.js - Node.js 如何同时异步和单线程?