full_format/
full-format.rs

1#[macro_use]
2extern crate slog;
3extern crate slog_html;
4extern crate slog_stream;
5
6use slog::DrainExt;
7
8use std::fs::OpenOptions;
9
10fn main() {
11    let file = OpenOptions::new()
12        .create(true)
13        .write(true)
14        .truncate(true)
15        .open("target/log.html").unwrap();
16
17    let d1 = slog_stream::stream(
18        file,
19        slog_html::new().full().build()
20    );
21    let d2 = slog_stream::stream(
22        std::io::stderr(),
23        slog_html::new().full().build()
24    );
25
26    let root_log = slog::Logger::root(
27        slog::duplicate(d1, d2).fuse(),
28        o!("version" => env!("CARGO_PKG_VERSION"))
29    );
30
31    let server_log = root_log.new(o!("host" => "localhost", "port" => "8080"));
32    let peer1_log = server_log.new(o!("peer_addr" => "8.8.8.8", "port" => "18230"));
33    let peer2_log = server_log.new(o!("peer_addr" => "82.9.9.9", "port" => "42381"));
34
35    info!(server_log, "starting");
36    info!(server_log, "listening");
37    debug!(peer2_log, "connected");
38    debug!(peer2_log, "message received"; "length" => 2);
39    debug!(peer1_log, "connected");
40    debug!(peer2_log, "response sent"; "length" => 8);
41    debug!(peer2_log, "disconnected");
42    debug!(peer1_log, "message received"; "length" => 2);
43    debug!(peer1_log, "response sent"; "length" => 8);
44    debug!(peer1_log, "disconnected");
45    info!(server_log, "exit");
46}