1#[macro_use]
2extern crate nonblock_logger;
3extern crate chrono;
4
5use nonblock_logger::{log::Record, messages_in_channel, BaseFormater, FixedLevel, NonblockLogger};
6
7use std::time;
8
9fn main() {
10 let formater = BaseFormater::new().formater(format);
11
12 let mut handle = NonblockLogger::new()
13 .formater(formater)
14 .log_to_stdout()
15 .map_err(|e| eprintln!("failed to init nonblock_logger: {:?}", e))
16 .unwrap();
17
18 let now = time::Instant::now();
19
20 include!("log.snippet");
21
22 println!("join0_{}: {:?}", messages_in_channel(), now.elapsed());
23
24 handle.join();
25
26 println!("join1_{}: {:?}", messages_in_channel(), now.elapsed());
27}
28
29pub fn format(_: &BaseFormater, record: &Record) -> String {
30 let level = FixedLevel::new(record.level()).length(4);
31
32 format!(
44 "{} [#{}:{}] {}\n",
45 level,
46 record.file().unwrap_or("*"),
48 record.line().unwrap_or(0),
49 record.args()
50 )
51}