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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
use super::{
MessageType, PropagatorConfig,
worker::{Worker, WorkerJob},
};
use owo_colors::OwoColorize;
use std::sync::mpsc::Receiver;
pub struct TerminalPropagator {
_priv: (),
}
pub fn terminal(cfg: PropagatorConfig) -> Worker<TerminalPropagator> {
Worker::<TerminalPropagator>::new(cfg)
}
impl WorkerJob for TerminalPropagator {
fn job(_cfg: PropagatorConfig, rx: Receiver<MessageType>) {
loop {
match rx.recv() {
Ok(msg) => match msg {
MessageType::Log(log) => match log.level {
crate::log::LogLevel::Error => {
println!(
"{} [{}] {}",
"Error:".truecolor(231, 0, 11),
log.created_at,
log.message
)
}
crate::log::LogLevel::Warning => {
println!(
"{} [{}] {}",
"Warning:".truecolor(254, 154, 0),
log.created_at,
log.message
)
}
crate::log::LogLevel::Info => {
println!(
"{} [{}] {}",
"Info:".truecolor(21, 93, 252),
log.created_at,
log.message
)
}
crate::log::LogLevel::Http => {
println!(
"{} [{}] {}",
"Http:".truecolor(0, 166, 166),
log.created_at,
log.message
)
}
crate::log::LogLevel::Verbose => {
println!(
"{} [{}] {}",
"Verbose:".truecolor(0, 166, 0),
log.created_at,
log.message
)
}
crate::log::LogLevel::Debug => {
println!(
"{} [{}] {}",
"Debug:".truecolor(0, 166, 62),
log.created_at,
log.message
)
}
crate::log::LogLevel::Silly => {
println!(
"{} [{}] {}",
"Silly:".truecolor(80, 80, 80),
log.created_at,
log.message
)
}
},
MessageType::Metric(metric) => {
println!(
"Metric: {} = {} {}",
metric.name, metric.value, metric.operation
);
}
},
Err(e) => {
eprintln!("Error receiving message: {}", e);
break;
}
}
}
}
}