-
Notifications
You must be signed in to change notification settings - Fork 71
/
logging.rs
87 lines (76 loc) · 2.01 KB
/
logging.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
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
use log::Record;
use chrono;
use std::io::{Write, Error};
use ::Config;
#[inline(always)]
pub fn try_log<W>(config: &Config, record: &Record, write: &mut W) -> Result<(), Error>
where W: Write + Sized
{
if let Some(time) = config.time {
if time <= record.level() {
try!(write_time(write, config));
}
}
if let Some(level) = config.level {
if level <= record.level() {
try!(write_level(record, write));
}
}
if let Some(target) = config.target {
if target <= record.level() {
try!(write_target(record, write));
}
}
if let Some(location) = config.location {
if location <= record.level() {
try!(write_location(record, write));
}
}
try!(write_args(record, write));
Ok(())
}
#[inline(always)]
pub fn write_time<W>(write: &mut W, config: &Config) -> Result<(), Error>
where W: Write + Sized
{
let cur_time = chrono::Utc::now();
try!(write!(write, "{} ", cur_time.format(
config
.time_format
.unwrap_or("%H:%M:%S")
)));
Ok(())
}
#[inline(always)]
pub fn write_level<W>(record: &Record, write: &mut W) -> Result<(), Error>
where W: Write + Sized
{
try!(write!(write, "[{}] ", record.level()));
Ok(())
}
#[inline(always)]
pub fn write_target<W>(record: &Record, write: &mut W) -> Result<(), Error>
where W: Write + Sized
{
try!(write!(write, "{}: ", record.target()));
Ok(())
}
#[inline(always)]
pub fn write_location<W>(record: &Record, write: &mut W) -> Result<(), Error>
where W: Write + Sized
{
let file = record.file().unwrap_or("<unknown>");
if let Some(line) = record.line() {
try!(write!(write, "[{}:{}] ", file, line));
} else {
try!(write!(write, "[{}:<unknown>] ", file));
}
Ok(())
}
#[inline(always)]
pub fn write_args<W>(record: &Record, write: &mut W) -> Result<(), Error>
where W: Write + Sized
{
try!(writeln!(write, "{}", record.args()));
Ok(())
}