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
use log; use log::{LogLevel, SetLoggerError, LogMetadata, LogRecord}; use chrono::*; #[allow(unused)] pub struct TrustDnsLogger { level: LogLevel } impl TrustDnsLogger { pub fn new(level: LogLevel) -> TrustDnsLogger { TrustDnsLogger { level: level } } pub fn init(self) -> Result<(), SetLoggerError> { let result = log::set_logger(|max_log_level| { max_log_level.set(self.level.to_log_level_filter()); Box::new(self) }); info!("logging initialized"); result } pub fn enable_logging(log_level: LogLevel) { Self::new(log_level).init().is_ok(); } } impl log::Log for TrustDnsLogger { fn enabled(&self, metadata: &LogMetadata) -> bool { metadata.level() <= self.level } fn log(&self, record: &LogRecord) { if self.enabled(record.metadata()) { let local: DateTime<UTC> = UTC::now(); println!("{} {} {}:{} {}", local.to_rfc3339(), record.level(), record.location().module_path(), record.location().line(), record.args()); } } }