Skip to content

Commit ab2cf80

Browse files
Add option to remove params from traces
1 parent a10b987 commit ab2cf80

20 files changed

Lines changed: 166 additions & 14 deletions

sea-orm-sync/src/database/db_connection.rs

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ impl ConnectionTrait for DatabaseConnection {
147147
"sea_orm.execute",
148148
self.get_database_backend(),
149149
stmt.sql.as_str(),
150-
record_stmt = true,
150+
record_stmt = self.get_tracing_statement_logging(),
151151
{
152152
match &self.inner {
153153
#[cfg(feature = "sqlx-mysql")]
@@ -219,7 +219,7 @@ impl ConnectionTrait for DatabaseConnection {
219219
"sea_orm.query_one",
220220
self.get_database_backend(),
221221
stmt.sql.as_str(),
222-
record_stmt = true,
222+
record_stmt = self.get_tracing_statement_logging(),
223223
{
224224
match &self.inner {
225225
#[cfg(feature = "sqlx-mysql")]
@@ -249,7 +249,7 @@ impl ConnectionTrait for DatabaseConnection {
249249
"sea_orm.query_all",
250250
self.get_database_backend(),
251251
stmt.sql.as_str(),
252-
record_stmt = true,
252+
record_stmt = self.get_tracing_statement_logging(),
253253
{
254254
match &self.inner {
255255
#[cfg(feature = "sqlx-mysql")]
@@ -587,6 +587,25 @@ impl DatabaseConnection {
587587
}
588588

589589
impl DatabaseConnection {
590+
#[expect(unused)]
591+
pub(crate) fn get_tracing_statement_logging(&self) -> bool {
592+
match &self.inner {
593+
#[cfg(feature = "sqlx-mysql")]
594+
DatabaseConnectionType::SqlxMySqlPoolConnection(conn) => conn.tracing_statement_logging,
595+
#[cfg(feature = "sqlx-postgres")]
596+
DatabaseConnectionType::SqlxPostgresPoolConnection(conn) => conn.tracing_statement_logging,
597+
#[cfg(feature = "sqlx-sqlite")]
598+
DatabaseConnectionType::SqlxSqlitePoolConnection(conn) => conn.tracing_statement_logging,
599+
#[cfg(feature = "rusqlite")]
600+
DatabaseConnectionType::RusqliteSharedConnection(conn) => conn.tracing_statement_logging,
601+
DatabaseConnectionType::Disconnected => true,
602+
#[cfg(feature = "mock")]
603+
DatabaseConnectionType::MockDatabaseConnection(_) => true,
604+
#[cfg(feature = "proxy")]
605+
DatabaseConnectionType::ProxyDatabaseConnection(_) => true,
606+
}
607+
}
608+
590609
/// Get the database backend for this connection
591610
///
592611
/// # Panics

sea-orm-sync/src/database/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,8 @@ pub struct ConnectOptions {
7676
pub(crate) max_lifetime: Option<Option<Duration>>,
7777
/// Enable SQLx statement logging
7878
pub(crate) sqlx_logging: bool,
79+
/// Record SQL statements in tracing spans
80+
pub(crate) tracing_statement_logging: bool,
7981
/// SQLx statement logging level (ignored if `sqlx_logging` is false)
8082
pub(crate) sqlx_logging_level: log::LevelFilter,
8183
/// SQLx slow statements logging level (ignored if `sqlx_logging` is false)
@@ -208,6 +210,7 @@ impl ConnectOptions {
208210
acquire_timeout: None,
209211
max_lifetime: None,
210212
sqlx_logging: true,
213+
tracing_statement_logging: true,
211214
sqlx_logging_level: log::LevelFilter::Info,
212215
sqlx_slow_statements_logging_level: log::LevelFilter::Off,
213216
sqlx_slow_statements_logging_threshold: Duration::from_secs(1),
@@ -315,6 +318,17 @@ impl ConnectOptions {
315318
self.sqlx_logging
316319
}
317320

321+
/// Enable recording `db.statement` in tracing spans (default true).
322+
pub fn tracing_statement_logging(&mut self, value: bool) -> &mut Self {
323+
self.tracing_statement_logging = value;
324+
self
325+
}
326+
327+
/// Get whether `db.statement` recording in tracing spans is enabled.
328+
pub fn get_tracing_statement_logging(&self) -> bool {
329+
self.tracing_statement_logging
330+
}
331+
318332
/// Set SQLx statement logging level (default INFO).
319333
/// (ignored if `sqlx_logging` is `false`)
320334
pub fn sqlx_logging_level(&mut self, level: log::LevelFilter) -> &mut Self {

sea-orm-sync/src/database/tracing_spans.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ macro_rules! with_db_span {
161161
if $record_stmt {
162162
span.record("db.statement", $sql);
163163
}
164-
span.in_scope($fut)
164+
span.in_scope(|| $fut)
165165
}
166166
#[cfg(not(feature = "tracing-spans"))]
167167
{

sea-orm-sync/src/database/transaction.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ pub struct DatabaseTransaction {
2323
backend: DbBackend,
2424
open: bool,
2525
metric_callback: Option<crate::metric::Callback>,
26+
tracing_statement_logging: bool,
2627
}
2728

2829
impl std::fmt::Debug for DatabaseTransaction {
@@ -37,6 +38,7 @@ impl DatabaseTransaction {
3738
conn: Arc<Mutex<InnerConnection>>,
3839
backend: DbBackend,
3940
metric_callback: Option<crate::metric::Callback>,
41+
tracing_statement_logging: bool,
4042
isolation_level: Option<IsolationLevel>,
4143
access_mode: Option<AccessMode>,
4244
sqlite_transaction_mode: Option<SqliteTransactionMode>,
@@ -46,6 +48,7 @@ impl DatabaseTransaction {
4648
backend,
4749
open: true,
4850
metric_callback,
51+
tracing_statement_logging,
4952
};
5053

5154
let begin_result: Result<(), DbErr> = super::tracing_spans::with_db_span!(
@@ -321,7 +324,7 @@ impl ConnectionTrait for DatabaseTransaction {
321324
"sea_orm.execute",
322325
self.backend,
323326
stmt.sql.as_str(),
324-
record_stmt = true,
327+
record_stmt = self.tracing_statement_logging,
325328
{
326329
#[cfg(not(feature = "sync"))]
327330
let conn = &mut *self.conn.lock();
@@ -437,7 +440,7 @@ impl ConnectionTrait for DatabaseTransaction {
437440
"sea_orm.query_one",
438441
self.backend,
439442
stmt.sql.as_str(),
440-
record_stmt = true,
443+
record_stmt = self.tracing_statement_logging,
441444
{
442445
#[cfg(not(feature = "sync"))]
443446
let conn = &mut *self.conn.lock();
@@ -497,7 +500,7 @@ impl ConnectionTrait for DatabaseTransaction {
497500
"sea_orm.query_all",
498501
self.backend,
499502
stmt.sql.as_str(),
500-
record_stmt = true,
503+
record_stmt = self.tracing_statement_logging,
501504
{
502505
#[cfg(not(feature = "sync"))]
503506
let conn = &mut *self.conn.lock();
@@ -584,6 +587,7 @@ impl TransactionTrait for DatabaseTransaction {
584587
Arc::clone(&self.conn),
585588
self.backend,
586589
self.metric_callback.clone(),
590+
self.tracing_statement_logging,
587591
None,
588592
None,
589593
None,
@@ -600,6 +604,7 @@ impl TransactionTrait for DatabaseTransaction {
600604
Arc::clone(&self.conn),
601605
self.backend,
602606
self.metric_callback.clone(),
607+
self.tracing_statement_logging,
603608
isolation_level,
604609
access_mode,
605610
None,
@@ -615,6 +620,7 @@ impl TransactionTrait for DatabaseTransaction {
615620
Arc::clone(&self.conn),
616621
self.backend,
617622
self.metric_callback.clone(),
623+
self.tracing_statement_logging,
618624
options.isolation_level,
619625
options.access_mode,
620626
options.sqlite_transaction_mode,

sea-orm-sync/src/driver/mock.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,7 @@ impl crate::DatabaseTransaction {
270270
Arc::new(Mutex::new(crate::InnerConnection::Mock(inner))),
271271
backend,
272272
metric_callback,
273+
true,
273274
None,
274275
None,
275276
None,

sea-orm-sync/src/driver/proxy.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ impl crate::DatabaseTransaction {
149149
Arc::new(Mutex::new(crate::InnerConnection::Proxy(inner))),
150150
backend,
151151
metric_callback,
152+
true,
152153
None,
153154
None,
154155
None,

sea-orm-sync/src/driver/rusqlite.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ pub struct RusqliteSharedConnection {
4343
pub(crate) conn: Arc<Mutex<State>>,
4444
acquire_timeout: Duration,
4545
metric_callback: Option<crate::metric::Callback>,
46+
pub(crate) tracing_statement_logging: bool,
4647
}
4748

4849
/// A loaned connection that supports nested transactions.
@@ -175,6 +176,7 @@ impl From<RusqliteConnection> for RusqliteSharedConnection {
175176
conn: Arc::new(Mutex::new(State::Idle(conn))),
176177
acquire_timeout: DEFAULT_ACQUIRE_TIMEOUT,
177178
metric_callback: None,
179+
tracing_statement_logging: true,
178180
}
179181
}
180182
}
@@ -196,6 +198,7 @@ impl RusqliteConnector {
196198
#[instrument(level = "trace")]
197199
pub fn connect(options: ConnectOptions) -> Result<DatabaseConnection, DbErr> {
198200
let acquire_timeout = options.acquire_timeout.unwrap_or(DEFAULT_ACQUIRE_TIMEOUT);
201+
let tracing_statement_logging = options.get_tracing_statement_logging();
199202
// TODO handle disable_statement_logging
200203
let after_conn = options.after_connect;
201204

@@ -244,6 +247,7 @@ impl RusqliteConnector {
244247
conn: Arc::new(Mutex::new(State::Idle(conn))),
245248
acquire_timeout,
246249
metric_callback: None,
250+
tracing_statement_logging,
247251
};
248252

249253
#[cfg(feature = "sqlite-use-returning-for-3_35")]
@@ -420,6 +424,7 @@ impl RusqliteSharedConnection {
420424
Arc::new(Mutex::new(InnerConnection::Rusqlite(conn))),
421425
crate::DbBackend::Sqlite,
422426
self.metric_callback.clone(),
427+
self.tracing_statement_logging,
423428
isolation_level,
424429
access_mode,
425430
sqlite_transaction_mode,

sea-orm-sync/src/driver/sqlx_mysql.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ pub struct SqlxMySqlConnector;
2929
pub struct SqlxMySqlPoolConnection {
3030
pub(crate) pool: MySqlPool,
3131
metric_callback: Option<crate::metric::Callback>,
32+
pub(crate) tracing_statement_logging: bool,
3233
}
3334

3435
impl std::fmt::Debug for SqlxMySqlPoolConnection {
@@ -42,6 +43,7 @@ impl From<MySqlPool> for SqlxMySqlPoolConnection {
4243
SqlxMySqlPoolConnection {
4344
pool,
4445
metric_callback: None,
46+
tracing_statement_logging: true,
4547
}
4648
}
4749
}
@@ -61,6 +63,7 @@ impl SqlxMySqlConnector {
6163
/// Add configuration options for the MySQL database
6264
#[instrument(level = "trace")]
6365
pub fn connect(options: ConnectOptions) -> Result<DatabaseConnection, DbErr> {
66+
let tracing_statement_logging = options.get_tracing_statement_logging();
6467
let mut sqlx_opts = options
6568
.url
6669
.parse::<MySqlConnectOptions>()
@@ -97,6 +100,7 @@ impl SqlxMySqlConnector {
97100
DatabaseConnectionType::SqlxMySqlPoolConnection(SqlxMySqlPoolConnection {
98101
pool,
99102
metric_callback: None,
103+
tracing_statement_logging,
100104
})
101105
.into();
102106

@@ -114,6 +118,7 @@ impl SqlxMySqlConnector {
114118
DatabaseConnectionType::SqlxMySqlPoolConnection(SqlxMySqlPoolConnection {
115119
pool,
116120
metric_callback: None,
121+
tracing_statement_logging: true,
117122
})
118123
.into()
119124
}
@@ -204,6 +209,7 @@ impl SqlxMySqlPoolConnection {
204209
DatabaseTransaction::new_mysql(
205210
conn,
206211
self.metric_callback.clone(),
212+
self.tracing_statement_logging,
207213
isolation_level,
208214
access_mode,
209215
)
@@ -225,6 +231,7 @@ impl SqlxMySqlPoolConnection {
225231
let transaction = DatabaseTransaction::new_mysql(
226232
conn,
227233
self.metric_callback.clone(),
234+
self.tracing_statement_logging,
228235
isolation_level,
229236
access_mode,
230237
)
@@ -334,13 +341,15 @@ impl crate::DatabaseTransaction {
334341
pub(crate) fn new_mysql(
335342
inner: PoolConnection<sqlx::MySql>,
336343
metric_callback: Option<crate::metric::Callback>,
344+
tracing_statement_logging: bool,
337345
isolation_level: Option<IsolationLevel>,
338346
access_mode: Option<AccessMode>,
339347
) -> Result<crate::DatabaseTransaction, DbErr> {
340348
Self::begin(
341349
Arc::new(Mutex::new(crate::InnerConnection::MySql(inner))),
342350
crate::DbBackend::MySql,
343351
metric_callback,
352+
tracing_statement_logging,
344353
isolation_level,
345354
access_mode,
346355
None,

sea-orm-sync/src/driver/sqlx_postgres.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ pub struct SqlxPostgresConnector;
2828
pub struct SqlxPostgresPoolConnection {
2929
pub(crate) pool: PgPool,
3030
metric_callback: Option<crate::metric::Callback>,
31+
pub(crate) tracing_statement_logging: bool,
3132
}
3233

3334
impl std::fmt::Debug for SqlxPostgresPoolConnection {
@@ -41,6 +42,7 @@ impl From<PgPool> for SqlxPostgresPoolConnection {
4142
SqlxPostgresPoolConnection {
4243
pool,
4344
metric_callback: None,
45+
tracing_statement_logging: true,
4446
}
4547
}
4648
}
@@ -60,6 +62,7 @@ impl SqlxPostgresConnector {
6062
/// Add configuration options for the PostgreSQL database
6163
#[instrument(level = "trace")]
6264
pub fn connect(options: ConnectOptions) -> Result<DatabaseConnection, DbErr> {
65+
let tracing_statement_logging = options.get_tracing_statement_logging();
6366
let mut sqlx_opts = options
6467
.url
6568
.parse::<PgConnectOptions>()
@@ -131,6 +134,7 @@ impl SqlxPostgresConnector {
131134
DatabaseConnectionType::SqlxPostgresPoolConnection(SqlxPostgresPoolConnection {
132135
pool,
133136
metric_callback: None,
137+
tracing_statement_logging,
134138
})
135139
.into();
136140

@@ -148,6 +152,7 @@ impl SqlxPostgresConnector {
148152
DatabaseConnectionType::SqlxPostgresPoolConnection(SqlxPostgresPoolConnection {
149153
pool,
150154
metric_callback: None,
155+
tracing_statement_logging: true,
151156
})
152157
.into()
153158
}
@@ -238,6 +243,7 @@ impl SqlxPostgresPoolConnection {
238243
DatabaseTransaction::new_postgres(
239244
conn,
240245
self.metric_callback.clone(),
246+
self.tracing_statement_logging,
241247
isolation_level,
242248
access_mode,
243249
)
@@ -259,6 +265,7 @@ impl SqlxPostgresPoolConnection {
259265
let transaction = DatabaseTransaction::new_postgres(
260266
conn,
261267
self.metric_callback.clone(),
268+
self.tracing_statement_logging,
262269
isolation_level,
263270
access_mode,
264271
)
@@ -369,13 +376,15 @@ impl crate::DatabaseTransaction {
369376
pub(crate) fn new_postgres(
370377
inner: PoolConnection<sqlx::Postgres>,
371378
metric_callback: Option<crate::metric::Callback>,
379+
tracing_statement_logging: bool,
372380
isolation_level: Option<IsolationLevel>,
373381
access_mode: Option<AccessMode>,
374382
) -> Result<crate::DatabaseTransaction, DbErr> {
375383
Self::begin(
376384
Arc::new(Mutex::new(crate::InnerConnection::Postgres(inner))),
377385
crate::DbBackend::Postgres,
378386
metric_callback,
387+
tracing_statement_logging,
379388
isolation_level,
380389
access_mode,
381390
None,

0 commit comments

Comments
 (0)