I am trying to use a log box and implement a logger myself. I call it mylog .
extern crate log; use log::*; struct Mylog; impl log::Log for Mylog { fn enabled(&self, metadata: &LogMetadata) -> bool { metadata.level() <= LogLevel::Info } fn log(&self, record: &LogRecord) { if self.enabled(record.metadata()) { println!("hello log"); } } } impl Drop for Mylog { fn drop(&mut self) { println!("dropped"); // This is never called, why? } } pub fn init() -> Result<(), SetLoggerError> { log::set_logger(|max_log_level| { max_log_level.set(LogLevelFilter::Info); Box::new(Mylog) }) }
And in main.rs:
extern crate mylog; #[macro_use] extern crate log; fn main() { mylog::init().unwrap(); info!("My info message"); }
Drop never called, and I don't understand why.
logging destructor rust
Yuri Nasyrov
source share