Flutter日志追踪插件tracker_logger_bundle的使用

tracker_logger_bundle是一个用于加速开发和调试的Flutter插件包,它将多个信息、事件和错误跟踪器与日志库组合在一起。只需初始化一次并传入所有API密钥,即可在整个应用程序中无感知地使用。

目前支持以下库:

开始使用

初始化日志记录器

最简单的方式是在应用启动时初始化日志记录器实例。这通常在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

1 回复

更多关于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());
}
回到顶部