Flutter 日志打印 ddlog

2021-05-12  本文已影响0人  SoaringHeart

效果:

///时间 文件名 类名 行:打印内容 
flutter: 2021-05-12 19:26:22.856629  main.dart, _MyHomePageState [line 123]: 1
void ddlog(dynamic? obj){
  DDTraceModel model = DDTraceModel(StackTrace.current);
  print("${DateTime.now()}  ${model.fileName}, ${model.className} [line ${model.lineNumber}]: $obj");
}

class DDTraceModel {
  final StackTrace _trace;

  String fileName = "";
  String className = "";
  int lineNumber = 0;
  int columnNumber = 0;

  DDTraceModel(this._trace) {
    _parseTrace();
  }

  void _parseTrace() {
    var traceString = this._trace.toString().split("\n")[1];
    this.className = traceString.split(".")[0].replaceAll("#1", "").trim();
    // print('___${this.className}_$traceString');
    // print('___${this.className}_\n${this._trace.toString()}');

    var indexOfFileName = traceString.indexOf(RegExp(r'[A-Za-z_]+.dart'));
    var fileInfo = traceString.substring(indexOfFileName);
    var listOfInfos = fileInfo.split(":");
    this.fileName = listOfInfos[0];
    this.lineNumber = int.parse(listOfInfos[1]);

    var columnStr = listOfInfos[2];
    columnStr = columnStr.replaceFirst(")", "");
    this.columnNumber = int.parse(columnStr);
  }
}
上一篇 下一篇

猜你喜欢

热点阅读