-
Couldn't load subscription status.
- Fork 97
Yes. See slog-stdlog crate and slog oldlogging example.
#[macro_use]
extern crate log;
extern crate slog_stdlog;
fn main() {
slog_stdlog::init().unwrap();
// Note: this `info!(...)` macro comes from `log` crate, but `slog-stdlog`
// registered itself above and will delivered it to current `slog-scope`
// `Logger`. See respective documentation for more information.
info!("standard logging redirected to slog");
}or if you were using env_logger before:
#[macro_use]
extern crate log;
extern crate slog_envlogger;
fn main() {
let _guard = slog_envlogger::init().unwrap();
// Note: this `info!(...)` macro comes from `log` crate
info!("standard logging redirected to slog");
}If you start a new project, you should just use slog and not log.
If you're just trying out slog in existing project, you can use slog-stdlog and keep using log crate macros. During transition period to slog, you can use alternative names of slog macros. See slog alternative names example
Yes. Every closure-value is provided with RecordInfo argument which contains that information. Output it under any name you want, any way you want. See slog file-line-module example.
Yes. slog-rs provides the same Cargo.toml-defined feature-s that standard log did, that allow completely disabling given logging levels at compile time. One difference is, by default slog disables lowest logging levels.
Not necessarily. You can help yourself using slog-scope.
Note however that slog author advises not using slog_scope at all, and definitely not in libraries.
The reason is: manually passing Logger gives maximum flexibility. Using slog_scope ties the logging data structure to the stacktrace, which is not the same a logical structure of your software. Especially libraries should expose full flexibility to their users, and not use implicit logging behaviour.
Usually Logger instances fit pretty neatly into data structures in your code representing resources, so it's not that hard to pass them in constructors, and use info(self.log, ...) everywhere. Feel free to ask around on gitter channel or check other libraries using slog.
It's advised that libraries follow slog-enabled example library.
Use TestStdoutWriter