lib.rs 1.7 KB

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