在 Task.Run 中使用 NLog asp net-item:variable?
Using NLog's aspnet-item:variable inside Task.Run?
我的 Nlog.config 包含此模板:
<target xsi:type="Console" name="Console"
layout="${aspnet-item:variable:requestId} ${newline} ..." />
我正在使用 .net 核心(docker)。
在可等待的代码中,我确实看到了 item:variable:requestId
的值,因为我使用了 :
_httpContextAccessor.HttpContext.Items["requestId"] = "dummyvalue";
所以 nlog 可以从上下文中读取它。
但是,如果我的 loggerService
在 Task.Run
中运行,那么我看不到值。 (因为 Task.run 没有 HttpContext
)
问题:
有代码 API 可以手动设置 aspnet-item:variable:requestId
值吗?
或者还有其他选择吗?
在代码中:
MappedDiagnosticsLogicalContext.Set("MyValueName", myValue);
在Nlog.config中:
<target layout="${mdlc:item=MyValueName}" includeMdlc="true">
我的 Nlog.config 包含此模板:
<target xsi:type="Console" name="Console"
layout="${aspnet-item:variable:requestId} ${newline} ..." />
我正在使用 .net 核心(docker)。
在可等待的代码中,我确实看到了 item:variable:requestId
的值,因为我使用了 :
_httpContextAccessor.HttpContext.Items["requestId"] = "dummyvalue";
所以 nlog 可以从上下文中读取它。
但是,如果我的 loggerService
在 Task.Run
中运行,那么我看不到值。 (因为 Task.run 没有 HttpContext
)
问题:
有代码 API 可以手动设置 aspnet-item:variable:requestId
值吗?
或者还有其他选择吗?
在代码中:
MappedDiagnosticsLogicalContext.Set("MyValueName", myValue);
在Nlog.config中:
<target layout="${mdlc:item=MyValueName}" includeMdlc="true">