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);
}
}
}