Expand description
§wide-log
A high-speed wide-event logging system for Rust. A single structured event accumulates fields throughout a request/task lifecycle and is emitted as one JSON line on completion.
§Quick Start
The wide_log! macro takes a JSON object literal and generates the key
enum, Key trait impl, thread-local storage, guard type, current()
accessor, scope() / scope_default() async functions (behind the tokio
feature), WideLogLayer tower middleware (behind the tokio feature),
and all logging macros (wl_set!, wl_inc!, info!, etc.) in one
invocation.
ⓘ
use wide_log::wide_log;
wide_log!({
"service": {
"name": null,
"version": "1.0.0",
},
"requests": counter!,
});
fn main() {
tracing_subscriber::fmt().init();
let _guard = WideLogGuard::new();
wl_set!("service.name", "example-service");
wl_inc!("requests");
info!("request received");
// _guard drops → duration.total_ms set, event emitted as JSON.
}§Auto-Added Keys
"log"— log entries frominfo!(),warn!(), etc. Handled internally; never declared by the user."duration"— elapsed time in ms. Auto-added as"duration": { "total_ms": duration! }if not declared.
§info! Shadowing
The generated info!, warn!, error!, debug!, trace! macros shadow
tracing::info! etc. when both are in scope. To call the real tracing
macros, use the fully qualified path: ::tracing::info!(...).
§Features
tokio— enables async support:scope(),scope_default(),WideLogLayertower middleware, andtokio::task_local!storage.
Re-exports§
pub use error::Error;pub use guard::ScopedGuard;pub use key::Key;pub use value::Value;pub use wide_event::WideEvent;pub use context::ContextCell;
Modules§
Macros§
- wide_
log - The
wide_log!proc-macro. See the crate-level documentation for syntax and usage details.