Simple wrapper for the log crate that enables adding arbitrary information at runtime for future calls to the debugging macros.
That magic behind this is a thread_local RefCell<Vec<String>>
which when
populated will include the included identifiers, seperated with ": ".
```rust
extern crate env_logger;
fn main () { let _ = env_logger::init();
scoped_info!("1");
{
push_log_scope!("outer-scope");
scoped_info!("2: {}", "some args");
if false { // Enable to test assert
scoped_assert!(false);
scoped_assert!(false, "I failed!");
}
push_log_scope!("inner-scope");
scoped_info!(target: "some-target", "2: {}", "some args");
Foo.foo();
}
scoped_info!("4");
}
struct Foo;
impl Foo { fn foo(&self) { pushlogscope!("{:?}-scope", self); scoped_info!("3"); } } ```
Sample output from: cargo run --example example && RUST_LOG=example=trace target/debug/examples/example
Running `target/debug/examples/example`
INFO:example: 1
INFO:example: outer-scope: 2: some args
INFO:example: outer-scope: inner-scope: Foo-scope: 3
INFO:example: 4