env_logger
as a slog-rs
drainenv_logger
is a de facto standard Rust logger implementation, which allows
controlling logging to stderr
via RUST_LOG
environment variable.
This is a fork of env_logger
that makes it work as a slog-rs
drain:
Notable changes:
slog-stdlog
to provide support for legacy info!(...)
like
statements.envlogger
does not do formatting anymore: slog-envlogger
can be composed
with any other slog-rs
drains, so there's no point for it to provide it's
own formatting. You can now output JSON to a file, controlling it via
RUST_LOG
environment var. envlogger::init()
is provided for convenience
doing formatting to stderr
Warning: Documentation has been been left mostly untouched, which means some places of it might be confusing.
See examples
directory.
The simplest way to convert existing project to use slog-rs
+slog-envlogger
is:
```rust fn main() { slog_envlogger::init().unwrap();
error!("error");
info!("info");
trace!("trace");
} ```
More proper (and powerful) version would be:
```rust fn main() { let term = slogterm::stderr(); let drain = slogenvlogger::new(term);
let root_logger = drain.into_logger(o!("build" => "8jdkj2df", "version" => "0.1.5"));
slog_stdlog::set_logger(root_logger.clone()).unwrap();
slog_error!(root_logger, "slog error");
error!("log error");
slog_info!(root_logger, "slog info");
info!("log info");
slog_trace!(root_logger, "slog trace");
trace!("log trace");
} ```
Using slog-stdlog
scopes you can make parts of the code log additional information (see scopes
example):
```rust fn main() { slog_envlogger::init().unwrap();
error!("log error");
slog_stdlog::scope(
slog_stdlog::with_current_logger(|l| l.new(o!("scope-extra-data" => "data"))),
|| foo()
);
trace!("log trace");
}
fn foo() { info!("log info inside foo");
// scopes can be nested!
slog_stdlog::scope(
slog_stdlog::with_current_logger(|l| l.new(o!("even-more-scope-extra-data" => "data2"))),
|| bar()
);
}
fn bar() { info!("log info inside bar"); } ```