Skip to content

Commit 78c6d3b

Browse files
committed
Gate db.query.text and db.query.parameter.* behind opt-in flags
Per OTel semantic conventions, db.query.text and db.query.parameter.* are Opt-In level attributes that may expose sensitive data. They should not be collected by default. Added IsQueryTextTracingEnabled flag and reuse IsParameterLoggingEnabled for parameter tracing.
1 parent 4f83e23 commit 78c6d3b

2 files changed

Lines changed: 16 additions & 5 deletions

File tree

src/FirebirdSql.Data.FirebirdClient/Logging/FbLogManager.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ namespace FirebirdSql.Data.Logging;
2323
public static class FbLogManager
2424
{
2525
public static bool IsParameterLoggingEnabled { get; private set; } = false;
26+
public static bool IsQueryTextTracingEnabled { get; private set; } = false;
2627

2728
private static ILoggerFactory LoggerFactory = NullLoggerFactory.Instance;
2829

@@ -32,6 +33,9 @@ public static void UseLoggerFactory(ILoggerFactory loggerFactory) =>
3233
public static void EnableParameterLogging(bool enable = true) =>
3334
IsParameterLoggingEnabled = enable;
3435

36+
public static void EnableQueryTextTracing(bool enable = true) =>
37+
IsQueryTextTracingEnabled = enable;
38+
3539
internal static ILogger<T> CreateLogger<T>() =>
3640
LoggerFactory.CreateLogger<T>();
3741
}

src/FirebirdSql.Data.FirebirdClient/Trace/FbActivitySource.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using System.Data;
44
using System.Diagnostics;
55
using FirebirdSql.Data.FirebirdClient;
6+
using FirebirdSql.Data.Logging;
67

78
namespace FirebirdSql.Data.Trace
89
{
@@ -72,7 +73,10 @@ internal static Activity CommandStart(FbCommand command)
7273

7374
// db.query_summary
7475

75-
activity.SetTag("db.query.text", command.CommandText);
76+
if (FbLogManager.IsQueryTextTracingEnabled)
77+
{
78+
activity.SetTag("db.query.text", command.CommandText);
79+
}
7680

7781
// network.peer.address
7882

@@ -83,11 +87,14 @@ internal static Activity CommandStart(FbCommand command)
8387
activity.SetTag("server.address", command.Connection.DataSource);
8488
}
8589

86-
foreach (FbParameter p in command.Parameters)
90+
if (FbLogManager.IsParameterLoggingEnabled)
8791
{
88-
var name = p.ParameterName;
89-
var value = NormalizeDbNull(p.InternalValue);
90-
activity.SetTag($"db.query.parameter.{name}", value);
92+
foreach (FbParameter p in command.Parameters)
93+
{
94+
var name = p.ParameterName;
95+
var value = NormalizeDbNull(p.InternalValue);
96+
activity.SetTag($"db.query.parameter.{name}", value);
97+
}
9198
}
9299

93100
// Only for explicit transactions.

0 commit comments

Comments
 (0)