flutter中的logger
flutter中的日誌使用print實現,但是print只能顯示一種顏色,這樣我們除錯起來比較麻煩。所以,我在ansicolor的基礎上實現了一個可以控制顏色的日誌記錄框架。
如何使用
已釋出pub,直接引用即可
colorize_logger: ^[last version]
github: github.com/TaleAi/flut…
優點
- 有 info、warning、error、fatal四種日誌型別及顏色
- release模式自動關閉日誌
- 可自定義輸出風格
簡單用法
import 'package:colorize_logger/colorize_logger.dart';
// 初始化
Logger.client = ColorizeLoggerClient();
Logger.info('info');
Logger.warning('waring', tag: '_MyHomePageState');/// 可以設定tag
Logger.fatal('fatal');
Logger.error('error');
複製程式碼
自定義擴充套件
先來看看基類
abstract class LoggerClient {
void info(String message, {String? tag});
void warning(String message, {String? tag});
void error(String message, {String? tag});
void fatal(String message, {String? tag});
}
複製程式碼
只要繼承並實現LoggerClient的方法就可以自定義了
import 'package:ansicolor/ansicolor.dart';
import 'client.dart';
class CustomLoggerClient extends LoggerClient {
@override
void error(String message, {String? tag}) {
final error = AnsiPen()
..white(bold: true)
..xterm(88, bg: true);
print(error(_format(tag ?? 'ERROR', message)));
}
@override
void fatal(String message, {String? tag}) {
final fatal = AnsiPen()
..white()
..red(bg: true);
print(fatal(_format(tag ?? 'FATAL', message)));
}
@override
void info(String message, {String? tag}) {
final info = AnsiPen()
..black()
..green(bg: true);
print(info(_format(tag ?? 'INFO', message)));
}
@override
void warning(String message, {String? tag}) {
final info = AnsiPen()
..black()
..yellow(bg: true);
print(info(_format(tag ?? 'WARNING', message)));
}
String _format(String tag, String message) {
return '[$tag] $message';
}
}
複製程式碼
接下來只要在初始化的地方替換就可以實現自定義日誌
Logger.client = CustomLoggerClient();
複製程式碼
下一步計劃
考慮到在實際應用中,給測試的包是release的版本,這樣有問題的時候我們無法看到日誌,所以下一步的計劃是
- 實現一個基於檔案的日誌記錄,可以儲存在手機中,這樣有問題可以匯出日誌給開發看