如何设置混音?我配置没有问题应用洞察 and NLog但我不知道如何关联操作。我使用最新版本的NLog所以它知道System.Diagnostics.Trace.CorrelationManager.ActivityId
以其${activityid}
多变的。另一方面应用洞察使用它自己的关联机制。我的问题是:
- 谁负责初始化标准
Trace.CorrelationManager.ActivityId
?我以为是ASP.NET MVC但在调试器中它总是Guid.Empty
。如果由我决定,MVC 管道中生成 id 的最佳位置在哪里?
- 怎么做应用洞察 use
Trace.CorrelationManager.ActivityId
?或者,使NLog use 应用洞察' 内部相关 ID?
- 如何确保 ID 在任何设备上正确传播/恢复
Task.Run()
and await
calls?
Update:
以下是我将 AI 链接到 NLog 的最终结果:
private void Log(LogEventInfo lei)
{
lei.Properties["OperationId"] = CorrelationManager.GetOperationId();
this.logger.Log(lei);
}
这是包装结束NLog's Log()
方法添加一个可以在 NLog.config 中引用的属性${event-context:OperationId}
. CorrelationManager
这是@Aravind 提供的链接中的解决方案。系统的使用CallContext
保证操作 ID 将流经所有异步点。现在,我们需要抓住AI操作id并将其存储在CorrelationManager
。这是在Global.asax.cs
:
protected void Application_BeginRequest()
{
RequestTelemetry telemetry = HttpContext.Current.GetRequestTelemetry();
string operationId = telemetry?.Id ?? Guid.NewGuid().ToString();
CorrelationManager.SetOperationId(operationId);
}
Now, If AI已为您的应用程序启用NLog日志与相关AI log.
如果您在 .net core 应用程序中使用 Application Insights 2.1+(也可能是 .net 框架,但我尚未测试),它们会自动设置System.Diagnostics.Activity.Current
到一个包含您可能想要的所有 Application Insights 信息以及更多信息的对象(ref https://github.com/Microsoft/ApplicationInsights-aspnetcore/issues/504).
在代码中您可以使用System.Diagnostics.Activity.Current?.Id
or System.Diagnostics.Activity.Current?.RootId
。 (使用调试器检查Activity.Current
看看还有什么可以了解不同的博客标签将输出什么)
要使用 nlog 记录它,您可以使用NLog.DiagnosticSource 包 https://github.com/NLog/NLog.DiagnosticSource:
-
安装包
Install-Package NLog.DiagnosticSource
或者在您的 csproj 中:
<PackageReference Include="NLog.DiagnosticSource" Version="1.*" />
-
添加到您的 nlog.config:
<extensions>
<add assembly="NLog.DiagnosticSource"/>
</extensions>
-
添加到 nlog 目标:
Use ${activity:property=TraceId}
(或用 Id 代替 TraceId,或其中之一他们列出的许多其他属性 https://github.com/NLog/NLog.DiagnosticSource) in a <target>
, e.g.:
<extensions>
<add assembly="NLog.DiagnosticSource"/>
</extensions>
<targets>
<target name="console" xsi:type="console" layout="${message}|TraceId=${activity:property=TraceId}" />
</targets>
<rules>
<logger minLevel="Info" writeTo="console" />
</rules>
这将输出类似以下的日志消息:
My log message|TraceId=921af8f6ba994c9eb3832ebf200846d7
或使用Id
代替TraceId
My log message|Id=00-921af8f6ba994c9eb3832ebf200846d7-0e8ba5571915864b-00
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)