Flutter日志跟踪插件trackit_console的使用

发布于 1周前 作者 songsunli 来自 Flutter

Flutter日志跟踪插件trackit_console的使用

完整的文档可以在 GitHub 上查看。

Trackit Console模块

允许你输出日志如下:

或者如下:

Trackit 是一个轻量级且可模块化的Dart和Flutter日志系统。Trackit具有模块化结构,可以避免未使用的功能。

trackit_console 模块用于格式化并输出日志事件到控制台。由于其格式化系统,它允许你灵活地自定义事件在控制台上的输出。使用诸如 ansicolor 的包,你可以为控制台添加颜色。

此外,你可以单独使用格式化器,例如,在将其发送到日志收集系统之前或在应用程序中显示时进行格式化。

如何使用

import 'package:trackit/trackit.dart';
import 'package:trackit_console/trackit_console.dart';

void main() {
  Trackit().listen(TrackitConsole(
    formatter: TrackitPatternFormater(),
  ).onData);

  final log = Trackit.create('MAIN');

  log.info('Hello world!');
  log.info('Log info message');
  log.info('Multiline\nlog\nmessage');

  log.debug('Debug message');
  try {
    throw Exception('Test Error exception message');
  } catch (exception, stackTrace) {
    log.error('catch error exception', exception, stackTrace);
  }
  try {
    throw Exception('Test Fatal exception message');
  } catch (exception, stackTrace) {
    log.fatal('catch fatal exception', exception, stackTrace);
  }
}

格式化器

TrackitJsonFormatter

将日志事件转换为可以发送到日志收集系统的 Map<String, dynamic>

TrackitSimpleFormatter

用于最小化地将日志事件转换为字符串,如下所示:

[info] 2024-11-19T13:20:52.488727 {MAIN} Log info message

它有两个配置参数:

  • bool withException - 指定是否显示存在的错误信息(默认为 true
  • bool withStackTrace - 指定是否显示存在的堆栈跟踪信息(默认为 true
TrackitPatternFormater

根据模板格式化日志输出。这是一个相当灵活的格式化器,允许你灵活地自定义事件字符串,通过添加或排除参数,每个参数都可以指定转换为字符串的方法。

模板在 template 参数中指定,是一个带有替换器的字符串,这些替换器将被当前的日志事件值替换。模板替换器可以取以下值:

模式 描述
{L} 日志级别
{T} 日志实例标题
{D} 日志事件时间
{M} 日志事件消息
{E} 日志事件异常
{S} 日志事件堆栈跟踪

此外,你可以指定如何形成日志事件字段的字符串值。为此,使用 stringify 参数。传递一个形成 LogEventString 对象的函数,该对象包含字段的字符串值。此参数可用于向输出添加颜色并格式化输出。以下是一个使用示例:

import 'package:trackit/trackit.dart';
import 'package:trackit_console/trackit_console.dart';

LogEventString stringifyEvent(LogEvent event) {
  String color() => switch (event.level) {
    LogLevelTrace() => '37m',
    LogLevelDebug() => '34m',
    LogLevelInfo() => '32m',
    LogLevelWarn() => '33m',
    LogLevelError() => '31m',
    LogLevelFatal() => '31m',
  };
  
  return LogEventString(
    level: '\x1B[${color()}${event.level.name.toUpperCase().substring(0, 1)}\x1B[0m',
    title: event.title.toUpperCase(),
    time: (event.time.millisecondsSinceEpoch ~/ 1000).toString(),
    message: event.message?.toString() ?? '',
  );
}

void main(){
  Trackit().listen(TrackitConsole(
    formatter: TrackitPatternFormater(
      pattern: '[{L}] <{D}> ({T}): {M}\n{E}\n{S}',
      stringify: stringifyEvent,
    ),
  ).onData);

  final log = Trackit.create('MAIN');
  log.info('Hello world!');
  log.debug('Debug message');

  try {
    throw Exception('Test Fatal exception message');
  } catch (exception, stackTrace) {
    log.fatal('catch fatal exception', exception, stackTrace);
  }
}

此外,使用 post 参数,你可以对生成的字符串进行后处理。例如,为其添加颜色或边框。以下是一个使用示例:

import 'package:trackit/trackit.dart';
import 'package:trackit_console/trackit_console.dart';

String color(LogEvent event) => switch (event.level) {
  LogLevelTrace() => '37m',
  LogLevelDebug() => '34m',
  LogLevelInfo() => '32m',
  LogLevelWarn() => '33m',
  LogLevelError() => '31m',
  LogLevelFatal() => '31m',
};

void main(){
  Trackit().listen(TrackitConsole(
    formatter: TrackitPatternFormater(
      pattern: '[{L}] <{D}> ({T}): {M}\n{E}\n{S}',
      post: (event, value) => [
        '\x1B[${color(event)}┌──────────────────────────────────────────────────────────────────\x1B[0m',
        ...value.split('\n').map((str) => '\x1B[${color(event)}│ $str\x1B[0m'),
        '\x1B[${color(event)}└──────────────────────────────────────────────────────────────────\x1B[0m',
      ].join('\n'),
    ),
  ).onData);

  final log = Trackit.create('MAIN');
  log.info('Hello world!');
  log.debug('Debug message');

  try {
    throw Exception('Test Fatal exception message');
  } catch (exception, stackTrace) {
    log.fatal('catch fatal exception', exception, stackTrace);
  }
}

更多关于Flutter日志跟踪插件trackit_console的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter日志跟踪插件trackit_console的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


trackit_console 是一个用于 Flutter 应用的日志跟踪插件,它可以帮助开发者更好地调试和跟踪应用程序的运行情况。以下是如何使用 trackit_console 插件的基本步骤:

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 trackit_console 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  trackit_console: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来获取依赖。

2. 初始化插件

在应用程序的入口文件(通常是 main.dart)中初始化 trackit_console

import 'package:flutter/material.dart';
import 'package:trackit_console/trackit_console.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  TrackItConsole.initialize();  // 初始化插件
  runApp(MyApp());
}

3. 使用插件记录日志

你可以在应用程序的任何地方使用 TrackItConsole 来记录日志。以下是一些常见的日志级别和方法:

import 'package:trackit_console/trackit_console.dart';

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    // 记录不同级别的日志
    TrackItConsole.log('This is a log message');
    TrackItConsole.debug('This is a debug message');
    TrackItConsole.info('This is an info message');
    TrackItConsole.warn('This is a warning message');
    TrackItConsole.error('This is an error message');

    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

4. 查看日志

trackit_console 通常会将日志输出到控制台。你可以在运行应用时查看日志输出,或者根据插件的文档配置日志的输出方式(例如,保存到文件、发送到服务器等)。

5. 高级配置(可选)

trackit_console 可能提供一些高级配置选项,例如设置日志级别、日志格式、输出目标等。你可以参考插件的文档来进行配置。

6. 处理异常(可选)

你可以使用 trackit_console 来捕获和记录未处理的异常:

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  TrackItConsole.initialize();

  // 捕获未处理的异常
  FlutterError.onError = (FlutterErrorDetails details) {
    TrackItConsole.error('Unhandled exception: ${details.exceptionAsString()}');
  };

  runApp(MyApp());
}

7. 清理资源(可选)

如果你需要在应用程序退出时清理资源,可以在 dispose 方法中进行处理:

[@override](/user/override)
void dispose() {
  TrackItConsole.dispose();  // 清理资源
  super.dispose();
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!