mirror of
https://github.com/zaphar/tracing-subscriber-browser.git
synced 2025-07-21 19:29:48 -04:00
Correctly respect the instrumented spans
This commit is contained in:
parent
0e23d8157c
commit
81d1bb5493
@ -21,4 +21,7 @@ version = "0.3.1"
|
|||||||
features = ["registry"]
|
features = ["registry"]
|
||||||
|
|
||||||
[dependencies.wasm-bindgen]
|
[dependencies.wasm-bindgen]
|
||||||
version = "0.2.81"
|
version = "0.2.78"
|
||||||
|
|
||||||
|
[dependencies.wasm-bindgen-test]
|
||||||
|
version = "0.3"
|
||||||
|
38
src/lib.rs
38
src/lib.rs
@ -29,6 +29,7 @@ mod typings;
|
|||||||
pub struct BrowserLayer {
|
pub struct BrowserLayer {
|
||||||
record_timings: bool,
|
record_timings: bool,
|
||||||
max_level: tracing::Level,
|
max_level: tracing::Level,
|
||||||
|
//span_stack: Vec<span::Id>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for BrowserLayer {
|
impl Default for BrowserLayer {
|
||||||
@ -55,7 +56,13 @@ impl BrowserLayer {
|
|||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn write_for_level(&self, level: &tracing::Level, origin: String, recorder: Recorder) {
|
pub fn write_for_level(
|
||||||
|
&self,
|
||||||
|
level: &tracing::Level,
|
||||||
|
origin: String,
|
||||||
|
context: Option<Vec<String>>,
|
||||||
|
recorder: Recorder,
|
||||||
|
) {
|
||||||
let f: fn(String) = match *level {
|
let f: fn(String) = match *level {
|
||||||
tracing::Level::ERROR => typings::error,
|
tracing::Level::ERROR => typings::error,
|
||||||
tracing::Level::WARN => typings::warn,
|
tracing::Level::WARN => typings::warn,
|
||||||
@ -63,7 +70,13 @@ impl BrowserLayer {
|
|||||||
tracing::Level::DEBUG => typings::debug,
|
tracing::Level::DEBUG => typings::debug,
|
||||||
tracing::Level::TRACE => typings::trace,
|
tracing::Level::TRACE => typings::trace,
|
||||||
};
|
};
|
||||||
f(format!("{} {} {}", level, origin, recorder));
|
let spans = context
|
||||||
|
.map(|v| {
|
||||||
|
let s: String = v.concat();
|
||||||
|
s
|
||||||
|
})
|
||||||
|
.unwrap_or_else(|| String::new());
|
||||||
|
f(format!("{} {} {} {}", level, origin, recorder, spans));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -97,16 +110,35 @@ impl<S: tracing::Subscriber + for<'a> LookupSpan<'a>> Layer<S> for BrowserLayer
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_event(&self, event: &tracing::Event<'_>, _ctx: Context<'_, S>) {
|
fn on_event(&self, event: &tracing::Event<'_>, ctx: Context<'_, S>) {
|
||||||
let mut recorder = Recorder::new();
|
let mut recorder = Recorder::new();
|
||||||
event.record(&mut recorder);
|
event.record(&mut recorder);
|
||||||
let metadata = event.metadata();
|
let metadata = event.metadata();
|
||||||
|
let recorders = ctx.current_span().id().and_then(|id| {
|
||||||
|
ctx.span_scope(id).map(|scope| {
|
||||||
|
let span_details: Vec<String> = scope
|
||||||
|
.from_root()
|
||||||
|
.map(|span_ref| {
|
||||||
|
format!(
|
||||||
|
"{} {}",
|
||||||
|
span_ref.name(),
|
||||||
|
span_ref
|
||||||
|
.extensions()
|
||||||
|
.get::<Recorder>()
|
||||||
|
.expect("Unregistered Span")
|
||||||
|
)
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
span_details
|
||||||
|
})
|
||||||
|
});
|
||||||
self.write_for_level(
|
self.write_for_level(
|
||||||
metadata.level(),
|
metadata.level(),
|
||||||
metadata
|
metadata
|
||||||
.file()
|
.file()
|
||||||
.and_then(|file| metadata.line().map(|ln| format!("{}:{}", file, ln)))
|
.and_then(|file| metadata.line().map(|ln| format!("{}:{}", file, ln)))
|
||||||
.unwrap_or_default(),
|
.unwrap_or_default(),
|
||||||
|
recorders,
|
||||||
recorder,
|
recorder,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
30
src/tests.rs
30
src/tests.rs
@ -11,8 +11,30 @@
|
|||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
#[test]
|
use tracing::{info, instrument};
|
||||||
fn it_works() {
|
use wasm_bindgen_test::wasm_bindgen_test;
|
||||||
let result = 2 + 2;
|
|
||||||
assert_eq!(result, 4);
|
use super::*;
|
||||||
|
|
||||||
|
wasm_bindgen_test::wasm_bindgen_test_configure!(run_in_browser);
|
||||||
|
|
||||||
|
#[instrument]
|
||||||
|
fn instrumented_incrementor(arg: i32) -> i32 {
|
||||||
|
info!("Incrementing arg by 1");
|
||||||
|
arg + 1
|
||||||
|
}
|
||||||
|
|
||||||
|
#[instrument]
|
||||||
|
fn instrumented_function(arg: i32) {
|
||||||
|
info!("Calling increment function");
|
||||||
|
let incremented = instrumented_incrementor(arg);
|
||||||
|
info!(incremented, "Finished incrementing function");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[instrument]
|
||||||
|
#[wasm_bindgen_test]
|
||||||
|
fn it_works() {
|
||||||
|
configure_as_global_default();
|
||||||
|
info!("Calling instrumented function");
|
||||||
|
instrumented_function(3);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user