Flutter异步日志记录插件hemend_async_log_recorder的使用

Flutter 异步日志记录插件 hemend_async_log_recorder 的使用


Hemend Async Logger









该软件包扩展了现有功能的 hemend_logger 包(可以在 https://pub.dev/packages/hemend_logger 查找)。此扩展通过引入异步日志记录函数增强了包的功能,使用户能够使用多种方法(如 POST 请求、WebSocket、文件等)来记录日志。

当前版本的包包括对 POST 请求、WebSocket 和文件日志记录功能的内置支持,允许用户无缝地利用这些机制来记录日志。


图1:默认文件记录器


图2:默认 POST 记录器


安装 💻

在开始使用 Hemend Async Logger 之前,必须确保你的机器上已安装 Dart SDK。

pubspec.yaml 文件中添加 hemend_async_log_recorderhemend_logger

dependencies:
  hemend_logger: <latest-version>
  hemend_async_log_recorder: <latest-version>

然后运行以下命令以安装依赖项:

dart pub get

使用

只需将所需的记录器添加到 HemendLogger 实例中并开始记录日志:

import 'package:hemend_async_log_recorder/hemend_async_log_recorder.dart';
import 'package:hemend_logger/hemend_logger.dart';

void main() async {
  // 设置日志级别为 ALL
  Logger.root.level = Level.ALL;
  final logger = Logger.root;

  // 添加异步记录器
  HemendLogger.defaultLogger()
    ..addListener(
      HemendAsyncLogRecorder.post(postUrl: 'https://<Server>/record'),
    )
    ..addListener(
      HemendAsyncLogRecorder.file(filePath: 'example/test.log'),
    );

  // 记录一些信息
  for (var i = 0; i < 10; i++) {
    logger.info(i);
  }

  // 发送的数据格式如下:
  // {
  //   "ticket_id": 555,
  //   "updated_at": 1679201760431,
  //   "payload": {
  //     "test": "test"
  //   }
  // }

  // 并追加如下内容到 test.log 文件:
  // 2023-5-23 15:59:43 [Root-Logger] <Info>: test
}

持续集成 🤖

Hemend Async Logger 配备了一个由 Very Good Workflows 支持的 GitHub Actions 工作流。你也可以添加自己的 CI/CD 解决方案。

开箱即用,在每次拉取请求和推送时,CI 会格式化、检查和测试代码。这确保了代码的一致性和正确性,即使你添加了新功能或进行了更改。覆盖率也是通过 Very Good Workflows 来强制执行的。


示例代码

import 'package:hemend_async_log_recorder/hemend_async_log_recorder.dart';
import 'package:hemend_logger/hemend_logger.dart';

void main() async {
  Logger.root.level = Level.ALL;
  final logger = Logger.root;

  // 添加异步记录器
  HemendLogger.defaultLogger()
    ..addListener(
      HemendAsyncLogRecorder.post(postUrl: 'https://<Server>/record'),
    )
    ..addListener(
      HemendAsyncLogRecorder.file(filePath: 'example/test.log'),
    );

  // 记录一些信息
  for (var i = 0; i < 10; i++) {
    logger.info(i);
  }

  // 发送的数据格式如下:
  // {
  //   "ticket_id": 555,
  //   "updated_at": 1679201760431,
  //   "payload": {
  //     "test": "test"
  //   }
  // }

  // 并追加如下内容到 test.log 文件:
  // 2023-5-23 15:59:43 [Root-Logger] <Info>: test
}

更多关于Flutter异步日志记录插件hemend_async_log_recorder的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

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


当然,以下是如何在Flutter项目中使用hemend_async_log_recorder插件的详细代码示例。这个插件允许你以异步方式记录日志,从而避免阻塞主线程。

1. 添加依赖

首先,你需要在你的pubspec.yaml文件中添加hemend_async_log_recorder的依赖:

dependencies:
  flutter:
    sdk: flutter
  hemend_async_log_recorder: ^最新版本号 # 请替换为实际可用的最新版本号

然后运行flutter pub get来安装依赖。

2. 导入插件

在你的Dart文件中导入该插件:

import 'package:hemend_async_log_recorder/hemend_async_log_recorder.dart';

3. 初始化插件并配置

你可以在应用启动时初始化插件并进行配置。例如,在main.dart文件中:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 初始化hemend_async_log_recorder插件
  await HemendAsyncLogRecorder.init(
    logFilePath: 'logs/app_logs.txt', // 指定日志文件路径
    maxFileSize: 1024 * 1024, // 最大文件大小(字节),例如1MB
    maxFileCount: 5, // 最大文件数量,超过此数量将删除旧文件
  );

  runApp(MyApp());
}

4. 记录日志

你可以使用插件提供的record方法来记录日志。这个方法支持异步调用,因此不会阻塞主线程。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await HemendAsyncLogRecorder.init(
    logFilePath: 'logs/app_logs.txt',
    maxFileSize: 1024 * 1024,
    maxFileCount: 5,
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('HemendAsyncLogRecorder Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () async {
                  // 记录信息日志
                  await HemendAsyncLogRecorder.record(LogLevel.info, 'This is an info log');
                  
                  // 记录错误日志
                  await HemendAsyncLogRecorder.record(LogLevel.error, 'This is an error log');
                },
                child: Text('Log Messages'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

5. 日志级别

插件支持多种日志级别,包括infodebugwarnerror。你可以根据需要选择合适的日志级别。

enum LogLevel {
  info,
  debug,
  warn,
  error,
}

6. 清理日志

你可以调用clearLogs方法来清除所有日志文件:

ElevatedButton(
  onPressed: async () {
    await HemendAsyncLogRecorder.clearLogs();
    print('Logs cleared');
  },
  child: Text('Clear Logs'),
)

总结

以上是一个简单的示例,展示了如何在Flutter项目中使用hemend_async_log_recorder插件进行异步日志记录。你可以根据实际需求进行进一步的配置和扩展。希望这对你有所帮助!

回到顶部