slog-rs
Code snippet
fn main() {
let root = Logger::new_root(v!("version" => VERSION, "build-id" => "8dfljdf"));
let log = root.new(v!("child" => 1));
let counter = Arc::new(AtomicUsize::new(0));
let log = log.new(v!("counter" => {
let counter = counter.clone();
move |_ : &_| { counter.load(SeqCst)}
}));
log.info("before-fetch-add", s!()); counter.fetch_add(1, SeqCst);
log.info("after-fetch-add", s!());
log.set_drain(
drain::filter_level(
Level::Info,
drain::stream(
std::io::stderr(),
format::Json::new(),
),
),
);
log.debug("debug", s!("lazy-closure" => |_ : &_| slow_fib(40)));
let join = thread::spawn({
let log = log.clone();
move || {
log.info("subthread", s!("stage" => "start"));
thread::sleep(Duration::new(1, 0));
log.info("subthread", s!("stage" => "end"));
}
});
join.join().unwrap();
}
See examples/features.rs
for full code.
Introduction
Structured, composable logging for Rust. Work in progress, but usable
already.
Heavily inspired by log15 for Go, which I liked so much, that I want it in
Rust too.
Read Documentation for details and features.
If you want to say hi, or need help use #dpc gitter.im.
To report a bug or ask for features use github issues.
Building & running
If you need to install Rust (come on, you should have done that long time ago!), use rustup.
In your project
In Cargo.toml:
[dependencies]
slog = "*"
In your main.rs
:
#[macro_use]
extern crate slog;