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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
#[macro_export]
macro_rules! pkg {
() => {
{let mp = module_path!();
if mp.contains(':') {
&mp[0..mp.find(':').unwrap()]
}else {
mp
}
}
}
}
#[macro_export]
macro_rules! loc {
() => (
$crate::log::LogLoc::new(module_path!(),line!(), column!(),file!())
)
}
#[deprecated(since = "0.7.1",note = "Should use `logger_init!()` instead")]
#[macro_export]
macro_rules! init {
() => {
logger_init!();
};
}
#[macro_export]
macro_rules! logger_init {
() => {
$crate::log::Logger::init(pkg!());
};
}
#[macro_export]
macro_rules! db {
($($arg:tt)*) => (
if $crate::log::Logger::enable() && $crate::log::Logger::filter(module_path!(),$crate::log::LogLvl::Debug) {
use std::io::{self, Write};
&mut io::stderr().write_all($crate::log::LogMsg::new(loc!(),format_args!($($arg)*),$crate::log::LogLvl::Debug).call().as_bytes()).unwrap();
}
);
}
#[macro_export]
macro_rules! debug {
($($arg:tt)*) => (
db!($($arg)*)
);
}
#[macro_export]
macro_rules! dbln {
() => (db!("\n"));
($fmt:expr) => (db!(concat!($fmt, "\n")));
($fmt:expr, $($arg:tt)*) => (db!(concat!($fmt, "\n"), $($arg)*));
}
#[macro_export]
macro_rules! debugln {
($($arg:tt)*) => (
dbln!($($arg)*)
);
}
#[macro_export]
macro_rules! dbst {
($($arg:tt)*) => (
if $crate::log::Logger::enable() &&$crate::log::Logger::filter( module_path!(),$crate::log::LogLvl::Debug) {
use std::io::{self, Write};
let _= &mut io::stderr().write_all($crate::log::LogMsg::new(loc!(),format_args!($($arg)*),$crate::log::LogLvl::Debug).call().as_bytes());
}
);
}
#[macro_export]
macro_rules! dbstln {
() => (dbst!("\n"));
($fmt:expr) => (dbst!(concat!($fmt, "\n")));
($fmt:expr, $($arg:tt)*) => (dbst!(concat!($fmt, "\n"), $($arg)*));
}
#[macro_export]
macro_rules! fatal {
($($arg:tt)*) => (
use std::io::{self, Write};
let log_str = $crate::log::LogMsg::new(loc!(),format_args!($($arg)*),$crate::log::LogLvl::Fatal).call();
if $crate::log::Logger::enable() &&$crate::log::Logger::filter(module_path!(),$crate::log::LogLvl::Fatal) {
&mut io::stderr().write_all(log_str.as_bytes()).unwrap();
}
panic!("{}",log_str);
);
}
#[macro_export]
macro_rules! fataln {
() => (fatal!("\n"));
($fmt:expr) => (fatal!(concat!($fmt, "\n")));
($fmt:expr, $($arg:tt)*) => (fatal!(concat!($fmt, "\n"), $($arg)*));
}
#[macro_export]
macro_rules! error {
($($arg:tt)*) => (
if $crate::log::Logger::enable() &&$crate::log::Logger::filter(module_path!(),$crate::log::LogLvl::Error) {
use std::io::{self, Write};
&mut io::stderr().write_all($crate::log::LogMsg::new(loc!(),format_args!($($arg)*),$crate::log::LogLvl::Error).call().as_bytes()).unwrap();
}
);
}
#[macro_export]
macro_rules! errorln {
() => (error!("\n"));
($fmt:expr) => (error!(concat!($fmt, "\n")));
($fmt:expr, $($arg:tt)*) => (error!(concat!($fmt, "\n"), $($arg)*));
}
#[macro_export]
macro_rules! warn {
($($arg:tt)*) => (
if $crate::log::Logger::enable() &&$crate::log::Logger::filter(module_path!(),$crate::log::LogLvl::Warn) {
use std::io::{self, Write};
&mut io::stderr().write_all($crate::log::LogMsg::new(loc!(),format_args!($($arg)*),$crate::log::LogLvl::Warn).call().as_bytes()).unwrap();
}
);
}
#[macro_export]
macro_rules! warnln {
() => (warn!("\n"));
($fmt:expr) => (warn!(concat!($fmt, "\n")));
($fmt:expr, $($arg:tt)*) => (warn!(concat!($fmt, "\n"), $($arg)*));
}
#[macro_export]
macro_rules! info {
($($arg:tt)*) => (
if $crate::log::Logger::enable() &&$crate::log::Logger::filter(module_path!(),$crate::log::LogLvl::Info) {
use std::io::{self, Write};
&mut io::stderr().write_all($crate::log::LogMsg::new(loc!(),format_args!($($arg)*),$crate::log::LogLvl::Info).call().as_bytes()).unwrap();
}
);
}
#[macro_export]
macro_rules! infoln {
() => (info!("\n"));
($fmt:expr) => (info!(concat!($fmt, "\n")));
($fmt:expr, $($arg:tt)*) => (info!(concat!($fmt, "\n"), $($arg)*));
}