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

排查Application Insights仅显示部分.NET应用日志的问题

排查Azure App Service中.NET应用日志无法在Application Insights显示的方法

1. 检查NLog与Application Insights的集成配置

因为你使用了UseNLog(),需确认NLog是否正确配置Application Insights目标:

  • 查看nlog.config文件,是否包含以下核心配置:
    <extensions>
      <add assembly="NLog.Web.AspNetCore"/>
      <add assembly="NLog.ApplicationInsights"/>
    </extensions>
    <targets>
      <target xsi:type="ApplicationInsights" name="ai" />
    </targets>
    <rules>
      <logger name="*" minlevel="Info" writeTo="ai" />
    </rules>
    
  • 确保已安装匹配.NET版本的NLog.ApplicationInsights和NLog.Web.AspNetCore NuGet包。

2. 验证日志过滤级别配置

  • 检查appsettings.json的日志配置,确认未限制控制器/服务类的日志级别:
    "Logging": {
      "LogLevel": {
        "Default": "Information",
        "Microsoft.AspNetCore": "Warning",
        "YourNamespace.Controllers": "Information" // 需匹配你的控制器命名空间
      }
    }
    
  • 确认NLog规则中未排除控制器相关命名空间的日志输出。

3. 检查Application Insights基础配置

  • 确保Program.cs中已添加Application Insights服务注册:
    builder.Services.AddApplicationInsightsTelemetry();
    
  • 验证Azure App Service的应用设置中,APPINSIGHTS_INSTRUMENTATIONKEY或APPLICATIONINSIGHTS_CONNECTION_STRING配置正确且有效。

4. 排查App Service日志流转

  • 进入Azure门户的App Service > 监控 > 日志流,查看是否能实时看到控制器日志:
    • 如果日志流中也看不到,说明日志未生成或输出路径错误;
    • 如果日志流能看到,说明Application Insights集成环节存在问题。
  • 确认App Service的日志设置中,“应用日志(文件系统)”或“应用日志(Blob)”已启用,级别设置为“信息”及以上。

5. 验证Logger依赖注入有效性

  • 在控制器构造函数中添加测试日志,确认Logger实例是否被正确注入:
    public ProductsController(..., ILogger<ProductsController> logger)
    {
        _logger = logger;
        _logger.LogInformation("ProductsController logger injected successfully");
    }
    
    若这条日志仍未显示,说明依赖注入或日志基础配置存在问题。

6. 调整Application Insights采样设置

  • Application Insights默认采样机制可能过滤日志,在appsettings.json中强制关闭采样:
    "ApplicationInsights": {
      "Sampling": {
        "Enabled": false,
        "Percentage": 100
      }
    }
    
  • 检查是否存在自定义TelemetryInitializer或TelemetryProcessor过滤了控制器日志。

7. 启用NLog内部日志排查

  • 在nlog.config中启用内部日志,查看NLog运行时错误:
    <nlog internalLogFile="nlog-internal.log" internalLogLevel="Info" />
    
    生成的日志文件会显示是否存在连接Application Insights失败、权限不足或配置错误等信息。

内容的提问来源于stack exchange,提问作者s.demuro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 19:10:32