.NET项目中Serilog Application Insights Sink仅显示Requests不显示Traces
问题分析与解决方案
你遇到的Azure门户仅显示Requests而无Traces的问题,常见原因及修复方法如下:
1. 未明确设置Serilog最小日志级别
Serilog默认的最小日志级别若未显式配置,可能导致部分级别日志未被发送到Application Insights。在Serilog配置节点中添加MinimumLevel确保覆盖你需要的日志级别:
"Serilog": { "MinimumLevel": "Information", "Using": [ "Serilog.Sinks.ApplicationInsights" ], // 其他原有配置... }
2. Application Insights采样规则过滤了Traces
默认自适应采样会在高流量场景下丢弃部分Traces,导致Azure门户无法看到完整数据。可禁用采样或调整采样比例:
"ApplicationInsights": { "ConnectionString": "InstrumentationKey=XXXX", "Sampling": { "Enabled": false, // 调试或低流量场景可直接禁用 // 高流量场景可自定义采样比例:"Percentage": 100 } }
3. Serilog Sink未正确绑定连接字符串
虽然根节点配置了ApplicationInsights.ConnectionString,但Serilog Sink可能未自动读取该值,需在Sink参数中显式指定:
{ "Name": "ApplicationInsights", "Args": { "connectionString": "InstrumentationKey=XXXX", "telemetryConverter": "Serilog.Sinks.ApplicationInsights.TelemetryConverters.TraceTelemetryConverter, Serilog.Sinks.ApplicationInsights" } }
4. 依赖包版本不兼容
确保Serilog.Sinks.ApplicationInsights与Microsoft.ApplicationInsights.AspNetCore版本匹配,建议使用最新稳定版。以.NET 6+项目为例,更新NuGet包:
Install-Package Serilog.Sinks.ApplicationInsights -Version 4.0.0 Install-Package Microsoft.ApplicationInsights.AspNetCore -Version 2.21.0
5. Azure门户视图过滤或数据延迟
- 直接用Kusto查询验证Traces是否已到达:在Application Insights的「日志」页面执行
traces | limit 100 - 遥测数据存在传输延迟,可等待5-10分钟后再查看
额外验证步骤
确认_logger.LogInformation("Test Log Entry");代码确实被执行(例如放在Program.cs初始化后或控制器方法中),避免因代码未触发导致无日志输出。
内容的提问来源于stack exchange,提问作者Franko73
相关产品推荐
相关产品推荐

