lib.rs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. //! A logger that prints all messages with a readable output format.
  2. extern crate log;
  3. extern crate time;
  4. use log::{Log,Level,Metadata,Record,SetLoggerError};
  5. struct SimpleLogger {
  6. level: Level,
  7. }
  8. impl Log for SimpleLogger {
  9. fn enabled(&self, metadata: &Metadata) -> bool {
  10. metadata.level() <= self.level
  11. }
  12. fn log(&self, record: &Record) {
  13. if self.enabled(record.metadata()) {
  14. println!(
  15. "{} {:<5} [{}] {}",
  16. time::strftime("%Y-%m-%d %H:%M:%S", &time::now()).unwrap(),
  17. record.level().to_string(),
  18. record.module_path().unwrap_or_default(),
  19. record.args());
  20. }
  21. }
  22. fn flush(&self) {
  23. }
  24. }
  25. /// Initializes the global logger with a SimpleLogger instance with
  26. /// `max_log_level` set to a specific log level.
  27. ///
  28. /// ```
  29. /// # #[macro_use] extern crate log;
  30. /// # extern crate simple_logger;
  31. /// #
  32. /// # fn main() {
  33. /// simple_logger::init_with_level(log::Level::Warn).unwrap();
  34. ///
  35. /// warn!("This is an example message.");
  36. /// info!("This message will not be logged.");
  37. /// # }
  38. /// ```
  39. pub fn init_with_level(level: Level) -> Result<(), SetLoggerError> {
  40. let logger = SimpleLogger { level };
  41. log::set_boxed_logger(Box::new(logger))?;
  42. log::set_max_level(level.to_level_filter());
  43. Ok(())
  44. }
  45. /// Initializes the global logger with a SimpleLogger instance with
  46. /// `max_log_level` set to `LogLevel::Trace`.
  47. ///
  48. /// ```
  49. /// # #[macro_use] extern crate log;
  50. /// # extern crate simple_logger;
  51. /// #
  52. /// # fn main() {
  53. /// simple_logger::init().unwrap();
  54. /// warn!("This is an example message.");
  55. /// # }
  56. /// ```
  57. pub fn init() -> Result<(), SetLoggerError> {
  58. init_with_level(Level::Trace)
  59. }