.NET 6 Web API写入Azure Application Insights日志不全求助
核心:配置Application Insights专属日志级别
默认情况下,Application Insights的日志收集器会单独应用过滤规则,即便全局默认日志级别设为Trace,也需要单独为AI配置日志级别才能捕获低级别日志:
修改appsettings.json的Logging节点,添加ApplicationInsights专属的日志级别配置:
"Logging": { "LogLevel": { "Default": "Trace", "Microsoft": "Warning", "Microsoft.Hosting.Lifetime": "Information" }, "ApplicationInsights": { "LogLevel": { "Default": "Trace" // 覆盖AI默认过滤规则,允许所有级别日志上传 } } }
移除重复的日志注册配置
无需同时调用builder.Services.AddApplicationInsightsTelemetry();和builder.Services.AddLogging(builder => { builder.AddApplicationInsights(); });——前者已经集成了日志收集功能,重复注册可能引发配置冲突,保留AddApplicationInsightsTelemetry()即可。
检查命名空间级别的日志限制
确认你的控制器/服务所在命名空间未被单独设置高日志级别。比如以下配置会限制该命名空间下仅输出Warning及以上级别的日志:
"Logging": { "LogLevel": { "YourProjectNamespace.Controllers": "Warning" } }
将对应命名空间的日志级别改为Trace或Debug即可解除限制。
验证本地日志输出
先确认日志本身已正常生成:在appsettings.json中添加Console日志配置,运行项目调用接口后查看控制台,确认所有Vivek开头的日志都能输出:
"Logging": { "Console": { "LogLevel": { "Default": "Trace" } }, // 其他配置... }
如果控制台能看到全部日志,但AI中看不到,再检查AI连接字符串是否正确,以及本地环境是否能正常访问Azure服务。
排查自定义TelemetryProcessor过滤逻辑
如果你添加了自定义的TelemetryProcessor,检查其中是否有过滤Trace/Debug/Information级别的代码,确保这类日志能被正常提交到Application Insights。
完成以上配置后,重启项目并调用接口,等待数分钟(AI日志存在一定延迟),再执行Kusto查询traces | where message contains "Vivek"即可看到全部级别的日志。
内容的提问来源于stack exchange,提问作者Vivek Nuna

