一個實用的rust日誌板條箱,灰常好用

wdshihaoren發表於2021-05-16

@TOC

前言

rust終將君臨天下。但現在還處於發展的早期,雖然有很多日誌包,但沒有一款日誌包用的順手。這裡推薦wd_log板條箱。非常實用,傾情推薦。
支援功能如下:

  • 列印等級設定
  • 列印選項設定
  • 自定義日誌頭
  • 終端多種顏色列印
  • 支援輸出到檔案
  • 格式化輸出
  • result自動處理
  • 多欄位組合輸出 (coding)

簡介

支援的日誌等級

  • DEBUG
  • INFO
  • WARN
  • ERROR
  • PANIC

    簡單栗子

    [dependencies]
    wd_log = "0.1"
    fn main() {
      //設定列印級別為INFO,更多設定參考文件
      wd_log::set_level(wd_log::INFO);
      //以_ln結尾的巨集會自帶換行
      wd_log::log_debug_ln!("hello world");
      wd_log::log_info_ln!("{} {}","hello","world");
      wd_log::log_warn_ln!("hello world");
      wd_log::log_error_ln!("{:?}","hello world");
    }
    列印效果如下:
    在這裡插入圖片描述
  • 注意: log_panic 會在列印後,直接panic程式,測試如下:
    #[test]
    #[should_panic]
    fn test_panic(){
      wd_log::log_panic!("hello world")
    }

    更多用法

  • 以res_開頭的巨集,可以對result型別進行自動處理,如下:
      let result = std::fs::File::open("test.txt");
      //如果result為Ok(T) 則返回Some(T)
      //如果result為Err(_) 則列印並返回None
      let file = wd_log::res_error_ln!(result);
  • res_panic 用法如下:
      let result = std::fs::File::open("test.txt");
      //如果result為Ok(T) 則返回T
      //如果result為Err(_) 則列印錯誤並panic
      let file = wd_log::res_panic!(result);

文件

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章