如何设置混音?我在配置 Application Insights 和 NLog 方面没有任何问题,但我不知道如何关联操作。我使用最新版本的 NLog ,因此它知道System.Diagnostics.Trace.CorrelationManager.ActivityId
及其${activityid}
变量。另一方面, Application Insights 使用它自己的关联机制。我的问题是:
Trace.CorrelationManager.ActivityId
?我认为它是 ASP.NET MVC ,但在调试器中它总是Guid.Empty
。如果由我来决定MVC管道中生成id的最佳位置在哪里?Trace.CorrelationManager.ActivityId
?或者,使 NLog 使用 Aplication Insights '内部相关ID?Task.Run()
和await
来电时正确传播/恢复ID?更新
以下是我将AI链接到NLog的结果:
private void Log(LogEventInfo lei)
{
lei.Properties["OperationId"] = CorrelationManager.GetOperationId();
this.logger.Log(lei);
}
这是 NLog 的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);
}
现在,如果您的应用程序启用了 AI ,则 NLog 日志与 AI 日志相关联。