/
log.rs
46 lines (35 loc) · 1.24 KB
/
log.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright 2023 TiKV Project Authors. Licensed under Apache-2.0.
use std::io::Write;
use log::info;
use minitrace::collector::Config;
use minitrace::collector::ConsoleReporter;
use minitrace::prelude::*;
#[logcall::logcall("debug")]
#[trace]
fn plus(a: u64, b: u64) -> Result<u64, std::io::Error> {
Ok(a + b)
}
fn main() {
minitrace::set_reporter(ConsoleReporter, Config::default());
env_logger::Builder::from_default_env()
.format(|buf, record| {
// Add a event to the current local span representing the log record
Event::add_to_local_parent(record.level().as_str(), || {
[("message".into(), record.args().to_string().into())]
});
// Output the log to stdout as usual
writeln!(buf, "[{}] {}", record.level(), record.args())
})
.filter_level(log::LevelFilter::Debug)
.init();
{
let parent = SpanContext::random();
let root = Span::root("root", parent);
let _span_guard = root.set_local_parent();
info!("event in root span");
let _local_span_guard = LocalSpan::enter_with_local_parent("child");
info!("event in child span");
plus(1, 2).unwrap();
};
minitrace::flush();
}