syslog_ng_common/
logger.rs1use log::{LogRecord, LogMetadata, Log, LogLevelFilter};
10use messages::{InternalMessageSender, Msg};
11
12use log;
13
14pub fn init_logger() {
15 let _ = log::set_logger(|max_log_level| {
16 max_log_level.set(InternalLogger::level());
17 Box::new(InternalLogger)
18 });
19}
20
21
22pub struct InternalLogger;
23
24impl InternalLogger {
25 pub fn level() -> LogLevelFilter {
26 InternalMessageSender::level()
27 }
28}
29
30impl Log for InternalLogger {
31 fn enabled(&self, metadata: &LogMetadata) -> bool {
32 metadata.level() <= InternalMessageSender::level()
33 }
34
35 fn log(&self, record: &LogRecord) {
36 if self.enabled(record.metadata()) {
37 let message = format!("{}", record.args());
38 let level = Msg::from(record.level());
39 InternalMessageSender::create_and_send(level, message);
40 }
41 }
42}