logger.rs 908 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. use core::str::FromStr;
  2. use log::{Level, LevelFilter};
  3. pub struct Logger;
  4. impl Logger {
  5. pub fn init() {
  6. log::set_max_level(
  7. option_env!("RUST_LOG")
  8. .and_then(|s| LevelFilter::from_str(s).ok())
  9. .unwrap_or(LevelFilter::Info),
  10. );
  11. log::set_logger(&Logger).unwrap();
  12. }
  13. }
  14. impl log::Log for Logger {
  15. #[inline]
  16. fn enabled(&self, _metadata: &log::Metadata) -> bool {
  17. true
  18. }
  19. #[inline]
  20. fn log(&self, record: &log::Record) {
  21. let color_code: u8 = match record.level() {
  22. Level::Error => 31,
  23. Level::Warn => 93,
  24. Level::Info => 34,
  25. Level::Debug => 32,
  26. Level::Trace => 90,
  27. };
  28. println!(
  29. "\x1b[{color_code}m[{:>5}] {}\x1b[0m",
  30. record.level(),
  31. record.args(),
  32. );
  33. }
  34. fn flush(&self) {}
  35. }