You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过NLog在Application Insights中获取日志作用域信息?

解决Application Insights中未显示ILogger BeginScope信息的问题

看起来你遇到的核心问题是:ASP.NET Core的ILogger BeginScope上下文没有传递到NLog的Application Insights目标,导致Scope里的page和identification字段没出现在AI的CustomDimensions中。下面是具体的修复步骤:

1. 补全NLog与ASP.NET Core Logging管道的集成

你的Startup代码里只初始化了NLog的配置,但没有把NLog注册为Microsoft.Extensions.Logging(MEL)的日志提供程序。这是关键遗漏——因为BeginScope是MEL的功能,只有让MEL使用NLog作为底层实现,Scope上下文才能传递到NLog的AI目标。

修改ConfigureServices方法,添加NLog到LoggingBuilder:

public void ConfigureServices(IServiceCollection services)
{
    services.Configure<ApplicationInsightsServiceOptions>(Configuration.GetSection("ApplicationInsights"));
    services.AddApplicationInsightsTelemetry();

    // 新增:将NLog注册为MEL的日志提供程序
    services.AddLogging(loggingBuilder =>
    {
        loggingBuilder.ClearProviders(); // 清除默认日志提供程序(可选,避免冲突)
        loggingBuilder.AddNLog(Configuration.GetSection("NLog")); // 关联NLog配置
    });

    // ... 其余代码
}

2. 修改NLog配置,启用Scope属性捕获

在你的appsettings.json的NLog targets中,给aiTarget添加includeScopeProperties="true"配置,让AI目标主动拾取MEL的Scope属性:

"NLog": {
  "autoReload": true,
  "throwConfigExceptions": true,
  "internalLogLevel": "trace",
  "internalLogFile": "${basedir}/internal-nlog.txt",
  "extensions": [
    {
      "assembly": "Microsoft.ApplicationInsights.NLogTarget"
    }
  ],
  "targets": {
    "aiTarget": {
      "type": "ApplicationInsightsTarget",
      "includeScopeProperties": true, // 新增:启用Scope属性捕获
      "layout": "${message} ${all-event-properties}" // 可选:确保Scope属性包含在日志消息中(方便调试)
    },
    "logconsole": {
      "type": "ColoredConsole"
    }
  },
  "rules": [
    {
      "logger": "*",
      "minLevel": "Trace",
      "writeTo": "aiTarget, logconsole"
    }
  ]
}

3. 确认包版本兼容性

确保你引用的NuGet包是最新稳定版,避免版本不兼容导致的Scope传递问题:

  • Microsoft.ApplicationInsights.NLogTarget
  • Microsoft.Extensions.Logging.NLog
  • Microsoft.ApplicationInsights.AspNetCore

验证修复

重新运行你的应用,触发相关日志逻辑后,去Application Insights的Logs面板查询,你应该能在traces表的customDimensions字段中看到:

  • Scope里的page和identification属性
  • 日志消息里的test属性
  • 其他默认的日志属性

内容的提问来源于stack exchange,提问作者321X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 18:12:45