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
94
95
use std::env;
use std::fmt::Display;
use std::io::{self, Write};
use env_logger;
use env_logger::fmt::Formatter;
use log;
use time::OffsetDateTime;
fn format<L, M, LN, A>(
fmt: &mut Formatter,
level: L,
module: M,
line: LN,
args: A,
) -> io::Result<()>
where
L: Display,
M: Display,
LN: Display,
A: Display,
{
let now = OffsetDateTime::now_utc();
let now_secs = now.unix_timestamp();
writeln!(fmt, "{}:{}:{}:{}:{}", now_secs, level, module, line, args)
}
fn plain_formatter(fmt: &mut Formatter, record: &log::Record<'_>) -> io::Result<()> {
format(
fmt,
record.level(),
record.module_path().unwrap_or("None"),
record.line().unwrap_or(0),
record.args(),
)
}
fn get_env() -> String {
env::var("RUST_LOG").unwrap_or_default()
}
fn all_trust_dns(level: &str) -> String {
format!(
",named={level},trust_dns_client={level},trust_dns_server={level},trust_dns_proto={level},trust_dns_resolver={level},trust_dns_https={level}",
level = level
)
}
pub fn debug() {
let mut rust_log = get_env();
rust_log.push_str(&all_trust_dns("debug"));
logger(&rust_log);
}
pub fn default() {
let mut rust_log = get_env();
rust_log.push_str(&all_trust_dns("info"));
logger(&rust_log);
}
pub fn quiet() {
let mut rust_log = get_env();
rust_log.push_str(&all_trust_dns("error"));
logger(&rust_log);
}
pub fn env() {
let rust_log = get_env();
logger(&rust_log);
}
fn logger(config: &str) {
let mut builder = env_logger::Builder::new();
let log_formatter = plain_formatter;
builder.format(log_formatter);
builder.parse_filters(config);
builder.target(env_logger::Target::Stdout);
builder.init();
}