排查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.AspNetCoreNuGet包。
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运行时错误:
生成的日志文件会显示是否存在连接Application Insights失败、权限不足或配置错误等信息。<nlog internalLogFile="nlog-internal.log" internalLogLevel="Info" />
内容的提问来源于stack exchange,提问作者s.demuro
相关产品推荐
相关产品推荐

