using System.Diagnostics; using OpenTelemetry; namespace Nexus.Api.Observability; /// /// Removes content-bearing attributes before an activity reaches an exporter. /// Standard HTTP exception recording is disabled separately so exception /// events cannot contain messages or stack traces. /// public sealed class NexusTelemetryRedactionProcessor : BaseProcessor { private static readonly HashSet RedactedTagNames = new( [ "url.query", "url.full", "url.path", "http.url", "http.target", "exception.message", "exception.stacktrace", "db.statement", "db.query.text" ], StringComparer.OrdinalIgnoreCase); public override void OnEnd(Activity activity) { foreach (var tag in activity.TagObjects.ToArray()) { if (RedactedTagNames.Contains(tag.Key)) activity.SetTag(tag.Key, null); } } }