Flutter日志跟踪插件trackit_console的使用
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
更多关于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();
}