Flutter中的Logger

android大哥發表於2021-07-13

一 概述

在我們日常開發過程中 ,肯定少不了與Log打交道,在Android中有 logger 以及 timber 這樣的列印工具,可是在 Flutter 中原始的列印 print 只能有一種顏色,並沒有像 debug、error等好幾種顏色,除錯起來也麻煩,所以仿照 logger 寫了一個自己的 flutter_logger,簡單的日誌框架

二 優點

  1. 有Verbose、Debug、Info、Warn 和 Error 五中日誌以及顏色
  2. 列印json資料時更美觀易讀
  3. 可以定製你自己喜歡的level顏色值
  4. 上線時,一鍵關閉日誌輸出

三 使用

2.1 匯入

# 現在最新的版本是 2.0.1
flutter_easylogger: ^{LAST_VERSION}
複製程式碼

2.2 簡單使用

不帶有 tag 的

Logger.v("hello world");
Logger.d("hello world");
Logger.i("hello world");
Logger.w("hello world");
Logger.e("hello world");
var json = "{\"name\":\"tom\",\"age\":\"18\"}";
Logger.json(json);

複製程式碼

帶有tag的

Logger.d("hello",tag:"TAG");
複製程式碼

2.3 定製level顏色

使用之前可以設定level的顏色

Logger.levelVerbose = 247;
Logger.levelDebug = 26;
Logger.levelInfo = 28;
Logger.levelWarn = 3;
Logger.levelError = 9;
複製程式碼

設定的顏色值 在 0 - 255 之間,具體顏色參照下圖

2.3 關閉日誌

Logger.enable = false;
複製程式碼

四 原理 ANSI

當我們使用 print 列印的時候,控制檯基本上是一種顏色,有沒有一種可以使控制檯改變顏色的?答案是有的,那就是 ANSI ,可以修改控制檯的顏色值。

4.1研究

4.1.1 更改顏色值,比如我們列印下面的程式碼

print('\x1B[35m 紫色hello world \x1B[0m');
print('\x1B[31m 紅色hello world \x1B[0m');

複製程式碼

image.png

4.1.2 加粗

print('\x1B[1m 粗體\x1B[0m');
print('\x1B[1;31m 粗紅色hello world \x1B[0m');
print('正常');
複製程式碼

image.png

4.1.3 下劃線

print('\x1B[4m下劃線\x1B[0m');
複製程式碼

image.png

4.2 google開源的ansicolor-dart

當然了,如果你對 ANSI 足夠 瞭解,你直接使用 ANSI 即可,當然 google 也為 dart 封裝了一個 ansi 的使用,我們可以根據這個來控制我們的控制檯顏色

專案地址

相關文章