This crate allow testing if function emitted logs.
Example how to use it with cucumber, you can find here.
use tracing::{error, span, Level};
use tracing_span_capture::{RecordedLogs, TracingSpanCaptureLayer};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::util::SubscriberInitExt;
fn tested_code() {
error!("try capture this");
}
fn main() {
tracing_subscriber::fmt()
.finish()
.with(TracingSpanCaptureLayer)
.init();
let span = span!(Level::INFO, "");
let record = RecordedLogs::new(&span);
{
let _enter = span.enter();
tested_code();
}
let logs = record.into_logs();
let last_log = logs.into_iter().rev().next().unwrap();
assert_eq!(last_log.message, "try capture this");
}
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE), or
- MIT license (LICENSE-MIT)