Azure App Insights非开发环境追踪日志缺失原因排查
.NET 6生产环境App Insights仅显示Error级日志的排查
我在生产环境的.NET 6项目中配置了Azure App Insights,开发环境(同样托管在App Service)的队列Worker服务能看到完整的追踪日志,但生产环境里只出现Error(severity 3)级别的日志。已排除自定义的QueueTelemetryFilter类影响(该类仅过滤特定时段非成功遥测,且所有环境表现一致),想知道原因,是否存在阻止非开发环境显示追踪日志的隐式处理?
配置信息
Program.cs
// Add services to the container. builder.Services.AddApplicationInsightsTelemetry(); builder.Services.AddApplicationInsightsTelemetryProcessor<QueueTelemetryFilter>();
appsettings配置文件(开发/生产)
{ "Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Warning" } }, "ApplicationInsights": { "ConnectionString": "[REDACTED]" } }
日志使用示例
public class SomeQueueProcessor: ISomeQueueProcessor { private readonly ILogger<SomeQueueProcessor> logger; public SomeQueueProcessor(ILogger<SomeQueueProcessor> logger) { this.logger = logger; } public async Task HandleQueue(SomeMessage message, CancellationToken cancellationToken) { logger.LogInformation("Begin SomeTask", message.Metadata); // 业务代码 try { // 核心逻辑代码 } catch(SomeException se){ logger.LogError("SomeTask Failed", se.ExceptionMetadata); } logger.LogInformation("End SomeTask", message.Metadata); } }
可能的原因及排查方向
- App Service环境变量覆盖日志级别:检查生产环境App Service的「配置」→「应用程序设置」,是否存在
Logging__LogLevel__Default或ApplicationInsights__Logging__LogLevel__Default这类环境变量,将日志级别设为了Error。环境变量优先级高于配置文件,会直接覆盖原有设置。 - Application Insights采样规则差异:生产环境可能启用了自适应采样或固定采样,导致Info级日志被过滤。检查生产环境配置中是否添加了采样规则,比如:
或者代码中通过"ApplicationInsights": { "Sampling": { "Enabled": true, "FixedRate": 0.1 } }TelemetryConfiguration设置了采样率,大量丢弃了Info日志。 - Worker服务日志提供者适配问题:.NET Worker服务推荐使用
AddApplicationInsightsTelemetryWorkerService()而非通用的AddApplicationInsightsTelemetry(),后者主要针对Web应用。虽然通用方法也能运行,但专用方法对Worker服务的日志处理更适配,可能存在隐式的环境差异处理。 - App Insights门户筛选器误设置:检查Azure门户中App Insights资源的「日志」页面,是否默认设置了只显示Error级日志的筛选条件,导致Info日志被隐藏。
- 生产环境配置文件未正确加载:确认
appsettings.Production.json是否成功部署,且Logging节点配置生效。可以在代码中注入IConfiguration,打印configuration["Logging:LogLevel:Default"]的值,验证当前生效的日志级别。
内容的提问来源于stack exchange,提问作者jarodsmk
相关产品推荐
相关产品推荐

