1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- //! A logger that prints all messages with a readable output format.
- extern crate log;
- extern crate chrono;
- use log::{Log,Level,Metadata,Record,SetLoggerError};
- use chrono::Local;
- struct SimpleLogger {
- level: Level,
- }
- impl Log for SimpleLogger {
- fn enabled(&self, metadata: &Metadata) -> bool {
- metadata.level() <= self.level
- }
- fn log(&self, record: &Record) {
- if self.enabled(record.metadata()) {
- println!(
- "{} {:<5} [{}] {}",
- Local::now().format("%Y-%m-%d %H:%M:%S,%3f"),
- record.level(),
- record.module_path().unwrap_or_default(),
- record.args());
- }
- }
- fn flush(&self) {
- }
- }
- /// Initializes the global logger with a SimpleLogger instance with
- /// `max_log_level` set to a specific log level.
- ///
- /// ```
- /// # #[macro_use] extern crate log;
- /// # extern crate simple_logger;
- /// #
- /// # fn main() {
- /// simple_logger::init_with_level(log::Level::Warn).unwrap();
- ///
- /// warn!("This is an example message.");
- /// info!("This message will not be logged.");
- /// # }
- /// ```
- pub fn init_with_level(level: Level) -> Result<(), SetLoggerError> {
- let logger = SimpleLogger { level };
- log::set_boxed_logger(Box::new(logger))?;
- log::set_max_level(level.to_level_filter());
- Ok(())
- }
- /// Initializes the global logger with a SimpleLogger instance with
- /// `max_log_level` set to `LogLevel::Trace`.
- ///
- /// ```
- /// # #[macro_use] extern crate log;
- /// # extern crate simple_logger;
- /// #
- /// # fn main() {
- /// simple_logger::init().unwrap();
- /// warn!("This is an example message.");
- /// # }
- /// ```
- pub fn init() -> Result<(), SetLoggerError> {
- init_with_level(Level::Trace)
- }
|