Flutter日志追踪插件tracker_logger_bundle的使用
tracker_logger_bundle是一个用于加速开发和调试的Flutter插件包,它将多个信息、事件和错误跟踪器与日志库组合在一起。只需初始化一次并传入所有API密钥,即可在整个应用程序中无感知地使用。
目前支持以下库:
- MatomoTracker
- SentryFlutter
- FirebaseAnalytics
- FirebaseCrashlytics
- Logger (用于更美观的调试输出)
开始使用
初始化日志记录器
最简单的方式是在应用启动时初始化日志记录器实例。这通常在main.dart
文件中完成,如下所示:
Future<void> main() async {
// ...
Log.instance.initialize();
// ...
}
在initialize
函数中可以添加你喜欢的插件。默认情况下,它只使用本地日志记录器。
如果使用了runZonedGuarded
保护机制,可以在应用程序运行器周围包裹初始化代码。
在main.dart
中,使用以下代码包裹在runZonedGuarded
内:
Future<void> main() async {
runZonedGuarded<
Future<void>>(() async {
WidgetsFlutterBinding.ensureInitialized();
await Log.instance.initialize(
matomoOptions: const MatomoOptions(siteId: 69, url: 'your matomo url'),
sentryConfig: SentryConfig(
optionsConfiguration: (options) {
// options.dsn = kDebugMode ? '' : F.sentryKey;
// 将tracesSampleRate设置为1.0以捕获100%的事务进行性能监控。
// 在生产环境中建议调整此值。
options.tracesSampleRate = 1.0;
},
appRunner: () => runApp(
const AppEntry(),
),
),
);
},
// 这将记录到你指定的所有插件
(error, stack) async => Log.instance.logError(
'Uncaught error in zonedGuarded',
error: error,
stackTrace: stack,
),
);
}
Firebase Analytics初始化
为了使插件正常工作,你需要先初始化Firebase核心。更多详细信息可以参考firebase analytics文档。
合作与贡献
如果有任何反馈、改进建议或想法,请随时联系。尽管这个包还远未完美,但我希望它能成为你在日常分析和错误日志记录中的实用助手。
路线图/待办事项
- 以智能方式添加同意管理功能。
- 添加更多的测试。
- 改进日志级别。
- 改进调试打印。
示例代码
以下是完整的示例代码,展示了如何使用tracker_logger_bundle
插件。
// example/example.md
<h1 id="example" class="hash-header">Example <a href="#example" class="hash-link">#</a></h1>
<h2 id="getting-started" class="hash-header">Getting started <a href="#getting-started" class="hash-link">#</a></h2>
<p>最简单的初始化方式是在应用启动时初始化日志记录器实例。这通常在<code>main.dart</code>文件中完成,如下所示:</p>
```dart
Future<void> main() async {
// ...
Log.instance.initialize();
// ...
}
在initialize
函数中可以添加你喜欢的插件。默认情况下,它只使用本地日志记录器。
如果使用了runZonedGuarded
保护机制,可以在应用程序运行器周围包裹初始化代码。
在main.dart
中,使用以下代码包裹在runZonedGuarded
内:
Future<void> main() async {
runZonedGuarded<
Future<void>>(() async {
WidgetsFlutterBinding.ensureInitialized();
await Log.instance.initialize(
matomoOptions: const MatomoOptions(siteId: 69, url: 'your matomo url'),
sentryConfig: SentryConfig(
optionsConfiguration: (options) {
// options.dsn = kDebugMode ? '' : F.sentryKey;
// 将tracesSampleRate设置为1.0以捕获100%的事务进行性能监控。
// 在生产环境中建议调整此值。
options.tracesSampleRate = 1.0;
},
appRunner: () => runApp(
const AppEntry(),
),
),
);
},
// 这将记录到你指定的所有插件
(error, stack) async => Log.instance.logError(
'Uncaught error in zonedGuarded',
error: error,
stackTrace: stack,
),
);
}
更多关于Flutter日志追踪插件tracker_logger_bundle的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter日志追踪插件tracker_logger_bundle的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
tracker_logger_bundle
是一个用于 Flutter 应用程序的日志追踪插件,它可以帮助开发者更好地管理和追踪应用程序中的日志信息。以下是如何使用 tracker_logger_bundle
的基本步骤:
1. 添加依赖
首先,你需要在 pubspec.yaml
文件中添加 tracker_logger_bundle
依赖:
dependencies:
tracker_logger_bundle: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来获取依赖。
2. 初始化日志追踪
在你的应用程序的入口文件(通常是 main.dart
)中,初始化 tracker_logger_bundle
:
import 'package:tracker_logger_bundle/tracker_logger_bundle.dart';
void main() {
// 初始化日志追踪
TrackerLoggerBundle.initialize(
enableLogging: true, // 是否启用日志
logLevel: LogLevel.verbose, // 日志级别
logToConsole: true, // 是否将日志输出到控制台
logToFile: true, // 是否将日志保存到文件
logFilePath: 'app_logs.txt', // 日志文件路径
);
runApp(MyApp());
}
3. 使用日志追踪
在你的应用程序中,你可以使用 TrackerLoggerBundle
来记录日志。以下是一些常见的日志记录方法:
import 'package:tracker_logger_bundle/tracker_logger_bundle.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// 记录不同级别的日志
TrackerLoggerBundle.logVerbose('This is a verbose log.');
TrackerLoggerBundle.logDebug('This is a debug log.');
TrackerLoggerBundle.logInfo('This is an info log.');
TrackerLoggerBundle.logWarning('This is a warning log.');
TrackerLoggerBundle.logError('This is an error log.');
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
4. 自定义日志格式
你可以通过设置 logFormatter
来自定义日志的格式:
TrackerLoggerBundle.initialize(
enableLogging: true,
logLevel: LogLevel.verbose,
logToConsole: true,
logToFile: true,
logFilePath: 'app_logs.txt',
logFormatter: (LogLevel level, String message, StackTrace? stackTrace) {
return '${DateTime.now()} [$level] $message';
},
);
5. 处理日志文件
如果你启用了日志文件记录,你可以通过以下方式获取日志文件的内容:
String logContent = await TrackerLoggerBundle.getLogFileContent();
print(logContent);
6. 清理日志文件
你可以通过以下方式清理日志文件:
await TrackerLoggerBundle.clearLogFile();
7. 禁用日志追踪
如果你想要在运行时禁用日志追踪,可以调用以下方法:
TrackerLoggerBundle.disableLogging();
8. 启用日志追踪
如果你想要在运行时启用日志追踪,可以调用以下方法:
TrackerLoggerBundle.enableLogging();
9. 设置日志级别
你可以在运行时动态设置日志级别:
TrackerLoggerBundle.setLogLevel(LogLevel.debug);
10. 处理异常
你还可以使用 TrackerLoggerBundle
来捕获和记录未处理的异常:
void main() {
TrackerLoggerBundle.initialize(
enableLogging: true,
logLevel: LogLevel.verbose,
logToConsole: true,
logToFile: true,
logFilePath: 'app_logs.txt',
);
// 捕获未处理的异常
FlutterError.onError = (FlutterErrorDetails details) {
TrackerLoggerBundle.logError('Unhandled exception: ${details.exception}', details.stack);
};
runApp(MyApp());
}