与Azure Application Insights,ASP.NET MVC和NLog的活动关联

时间:2016-09-13 13:44:02

标签: .net azure logging nlog azure-application-insights

如何设置混音?我在配置 Application Insights NLog 方面没有任何问题,但我不知道如何关联操作。我使用最新版本的 NLog ,因此它知道System.Diagnostics.Trace.CorrelationManager.ActivityId及其${activityid}变量。另一方面, Application Insights 使用它自己的关联机制。我的问题是:

  1. 谁负责初始化标准Trace.CorrelationManager.ActivityId?我认为它是 ASP.NET MVC ,但在调试器中它总是Guid.Empty。如果由我来决定MVC管道中生成id的最佳位置在哪里?
  2. 如何使应用洞察使用Trace.CorrelationManager.ActivityId?或者,使 NLog 使用 Aplication Insights '内部相关ID?
  3. 如何确保在Task.Run()await来电时正确传播/恢复ID?
  4. 更新

    以下是我将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 日志相关联。

0 个答案:

没有答案