trace static method

void trace(
  1. String message
)

高级跟踪日志,输出日志同时包含调用位置(文件名、行号和方法名)。 仅在debug/dev模式下生效,release版自动忽略。

参数:

  • message 要输出的日志内容。

返回结果: 无。

示例

Logger.trace('进入某方法');

Implementation

static void trace(String message) {
  if (const bool.fromEnvironment('dart.vm.product')) {
    // 当应用编译为 release 版本时,dart.vm.product 通常被设置为 true
    return;
  }
  String formattedDate = DateTime.now().toString();

  var currentStack = StackTrace.current;
  var formattedStack =
      currentStack.toString().split("\n")[1].trim(); // 获取调用 log 方法的位置

  // 提取文件名、方法名和行号信息
  var match = RegExp(r'^#1\s+(.+)\s\((.+):(\d+):(\d+)\)$').firstMatch(formattedStack);
  var methodName = match?.group(1) ?? 'unknown method';
  var fileName = match?.group(2) ?? 'unknown file';
  var line = match?.group(3) ?? 'unknown line';

  print('$formattedDate [$fileName:$line $methodName] $message');
}