Serilog敏感数据掩码在写入Application Insights时未生效
Serilog与Application Insights的日志处理路径不匹配
控制台日志完全走Serilog管道,掩码能生效,但Application Insights可能是通过ASP.NET Core原生Telemetry模块直接收集请求数据,没经过Serilog的Enricher处理。比如你如果同时启用了AddApplicationInsightsTelemetry(),这部分原生收集的请求遥测不会触发Serilog的掩码规则,直接发送到AI。Serilog的AI sink配置遗漏掩码Enricher
检查代码或serilog.json配置,确认Application Insights sink是基于添加了.Enrich.WithSensitiveDataMasking()的LoggerConfiguration构建的。如果是json配置,要确保enrichers列表里包含敏感数据掩码的配置,没有被sink的局部配置覆盖。自定义算子的作用范围没覆盖AI收集的属性
虽然测试时算子功能正常,但要确认它是否扫描了AI sink会记录的所有相关属性,比如RequestUri、RequestBody这些AI常用的日志属性。如果自定义EmailMaskingOperator只针对特定字段,而AI记录的邮箱在未被扫描的字段里,自然不会被掩码。Serilog.Enrichers.Sensitive与AI sink版本不兼容
核对Serilog.Enrichers.Sensitive、Serilog.Sinks.ApplicationInsights以及Serilog核心包的版本,部分版本组合可能导致Enricher在AI sink中失效,尝试升级到兼容的最新稳定版本试试。AI sink直接使用原始日志事件而非经过Enrich的版本
少数情况下,AI sink的配置可能跳过了Serilog的Enrich处理流程,直接获取原始日志数据。检查是否在配置sink时设置了类似PreserveOriginalProperties这类可能绕过Enrich的参数,导致掩码没被应用。
内容的提问来源于stack exchange,提问作者levelnis

