dogdata_sqlx/
sqlx_otel_span_macro.rs1use tracing::Span;
2
3use crate::execute::InstrumentedPool;
4
5#[macro_export]
6macro_rules! query_span_with_metadata {
7 ($sql:expr, $metadata:expr) => {{
8 tracing::span!(
9 tracing::Level::INFO,
10 "query",
11 span.kind = "client",
12 span.type = "sql",
13 operation = "query",
14 db.statement = %$sql,
15 peer.hostname = %$metadata.host,
16 peer.service = %$metadata.database,
17 out.host = %$metadata.host,
18 out.port = %$metadata.port,
19 db.system = %$metadata.system,
20 db.instance = %$metadata.database,
21 db.name = %$metadata.database,
22 )
23 }};
24}
25
26pub(crate) fn query_span_with_metadata<P: InstrumentedPool>(sql: &str, pool: &P) -> Span {
27 let metadata = pool.connection_info();
28 crate::query_span_with_metadata!(sql, metadata)
29}