美文网首页
flutter-log

flutter-log

作者: ChaosHeart | 来源:发表于2020-12-16 11:21 被阅读0次
import 'package:flutter/foundation.dart';
import 'package:stack_trace/stack_trace.dart';

///日志模型
enum LogsMode {
  debug, // 💙 DEBUG
  warning, // 💛 WARNING
  info, // 💚 INFO
  error, // ❤️ ERROR
}

///日志
void logs(dynamic msg, {LogsMode mode = LogsMode.debug}) {
  if (kReleaseMode) {
    // release模式不打印
    return;
  }
  var chain = Chain.current(); // Chain.forTrace(StackTrace.current);
  // 将 core 和 flutter 包的堆栈合起来(即相关数据只剩其中一条)
  chain =
      chain.foldFrames((frame) => frame.isCore || frame.package == "flutter");
  // 取出所有信息帧
  final frames = chain.toTrace().frames;
  // 找到当前函数的信息帧
  final idx = frames.indexWhere((element) => element.member == "logs");
  if (idx == -1 || idx + 1 >= frames.length) {
    return;
  }
  // 调用当前函数的函数信息帧
  final frame = frames[idx + 1];

  var modeStr = "";
  switch (mode) {
    case LogsMode.debug:
      modeStr = "💙 ";
      break;
    case LogsMode.warning:
      modeStr = "💛";
      break;
    case LogsMode.info:
      modeStr = "💚 ";
      break;
    case LogsMode.error:
      modeStr = "❤️ ";
      break;
  }

  print("${DateTime.now()} $modeStr ${frame.uri.toString().split("/").last}(${frame.line}) -> $msg");
}

相关文章

网友评论

      本文标题:flutter-log

      本文链接:https://www.haomeiwen.com/subject/dxengktx.html