Flutter 带定位日志log

209 阅读1分钟

相信大家在开发 flutter 应用的时候会用到日志打印,如果需要快速定位到日志发生的代码位置,就需要获取发生日志的文件路径以及代码行数,下列工具类可以帮大家解决这个问题


import 'package:flutter/foundation.dart';

class Logger {
  static void log(String message) {
    if (kDebugMode) {
      print(_formatLogMessage(message));
    }
  }
  static String _formatLogMessage(String message) {
    final stackTrace = StackTrace.current;
    final frames = stackTrace.toString().split('\n');
    if (frames.length > 2) {
      final frame = frames[2];
      final match = RegExp(r'#2\s+(.+)\s+((.+):(\d+):\d+)').firstMatch(frame);
      if (match != null) {
        final fileName = match.group(2);
        int start = fileName?.indexOf('/')??-1;
        final lineNumber = match.group(3);
        return '[${fileName?.substring(start)}:$lineNumber] $message';
      }
    }
    return message;
  }
}