Skip to content

Commit 0f4d5bd

Browse files
authored
Merge pull request #89 from seyyed-dev/main
Add `on_record` to `support tracing::field::Empty` and `span.record`
2 parents c1c42b8 + 306a297 commit 0f4d5bd

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

examples/deferred.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use tracing::field::Empty;
12
use tracing::{debug, error, info, level_filters::LevelFilter, span, trace, warn, Level};
23
use tracing_subscriber::{layer::SubscriberExt, registry::Registry, Layer};
34
use tracing_tree::HierarchicalLayer;
@@ -28,6 +29,13 @@ fn main() {
2829

2930
println!("-> This prints before the span open message");
3031

32+
let lazy = span!(Level::DEBUG, "lazy span", work_units = Empty);
33+
lazy.record("work_units", &3);
34+
lazy.in_scope(|| {
35+
info!("doing some work");
36+
});
37+
drop(lazy);
38+
3139
let _e2 = server_span.enter();
3240
info!("starting");
3341
std::thread::sleep(std::time::Duration::from_millis(1000));

examples/deferred.stdout

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
-> This prints before the span open message
22
1:main┐open: deferred::hierarchical-example version=0.1
3-
1:main└─┐open: deferred::server host="localhost", port=8080
3+
1:main└─┐open: deferred::lazy span work_units=3
4+
1:main ├─ INFO deferred doing some work
5+
1:main ┌┘close(v): deferred::lazy span work_units=3
6+
1:main┌┘post_close: deferred::hierarchical-example version=0.1
7+
1:main└┐pre_open: deferred::hierarchical-example version=0.1
8+
1:main └┐open(v): deferred::server host="localhost", port=8080
49
1:main ├─ INFO deferred starting
510
1:main ├─ INFO deferred listening
611
-> Deferring two levels of spans

src/lib.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,18 @@ where
601601
}
602602
}
603603
}
604+
605+
fn on_record(&self, id: &Id, values: &tracing_core::span::Record<'_>, ctx: Context<S>) {
606+
let Some(_guard) = Self::is_recursive() else {
607+
return;
608+
};
609+
610+
if let Some(span) = ctx.span(id) {
611+
if let Some(data) = span.extensions_mut().get_mut::<Data>() {
612+
values.record(data);
613+
}
614+
}
615+
}
604616
}
605617

606618
fn scope_path<'a, R: LookupSpan<'a>>(span: &SpanRef<'a, R>) -> ScopeFromRoot<'a, R> {

0 commit comments

Comments
 (0)