Flutter日志记录插件qa_logger的使用

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

Flutter日志记录插件qa_logger的使用

qa_logger 是一个Dart包,它为您的应用程序提供了一种简单且高效的方式来监控网络调用和日志。对于QA和后端开发人员来说,这是一个很好的工具。

特性

  • 与Dio轻松集成
  • 详细记录网络请求和响应
  • 帮助识别与网络相关的问题

安装

pubspec.yaml 文件中添加 qa_logger

dependencies:
  qa_logger: $currentVersion$

然后运行 flutter pub get

使用

1. 导入 qa_logger

在您的Dart文件中导入 qa_logger

import 'package:qa_logger/qa_logger.dart';
2. 添加 QAInterceptor 到 Dio 实例

在开发环境中,将 QAInterceptor 添加到您的Dio实例中:

if (Kproduction == false) {
  dio.interceptors.add(QaLogger().dioInterceptor);
}

现在,所有通过该Dio实例发起的网络请求和响应都将被 QAInterceptor 记录。

3. 配置服务器端口(可选)

默认情况下,服务器会在端口3000上运行。如果您想更改端口,可以在 main.dart 中添加以下配置:

QaLogger.configure(port: 3001, wsPort: 8001);
4. 覆盖 debugPrint 函数

您可以覆盖 debugPrint 函数,以便使用 QaLogger 类记录消息。这会自动将消息记录到 localhost:3000 服务器:

debugPrint = (message, {wrapWidth}) {
  if (Kproduction == true) return;
  QaLogger().log(message);
  if (message != null) {
    log(message, name: 'DebugPrint');
  }
};
5. 处理Flutter错误

除了记录调试消息,qa_logs 还可以用于记录Flutter错误。您可以通过覆盖 FlutterError.onError 函数来记录错误详情:

FlutterError.onError = (FlutterErrorDetails details) {
  if (Kproduction == true) return;
  QaLogger().logError(details.toString());
};

这样设置后,任何对 debugPrint 的调用都会被 QaLogger 记录,并可以在 localhost:3000 上查看。

查看日志

要查看日志,请在设备上打开 http://localhost:3000

如果要在笔记本电脑上查看日志,请确保设备和笔记本电脑连接到同一WiFi网络。然后,在笔记本电脑的浏览器中输入设备的IP地址(您也可以从 localhost:3000 页面获取IP地址),并加上端口 3000

例如,如果设备的IP地址是 192.168.1.5,您需要在浏览器中输入 192.168.1.5:3000

这将允许您实时监控应用程序的网络调用。

从Android模拟器查看日志

要在PC浏览器中查看来自Android模拟器的日志,您需要使用Android Debug Bridge (adb) 工具转发必要的端口。

运行以下命令:

adb forward tcp:3000 tcp:3000
adb forward tcp:<ws_port> tcp:<ws_port>

注意:将 <ws_port> 替换为 localhost:3000 页面上显示的端口号。

示例代码

以下是一个完整的示例代码,展示了如何使用 qa_logger

import 'package:dio/dio.dart';
import 'package:qa_logger/qa_logger.dart';

Future<void> main() async {
  /// (可选) 配置QaLogger,指定端口和日志限制
  // QaLogger.configure(port: 3001, wsPort: 8001, logLimit: 400);

  /// 创建Dio实例
  Dio dio = Dio();

  /// 将QaLogger的DioInterceptor添加到Dio实例
  dio.interceptors.add(QaLogger().dioInterceptor);

  /// 调用一个虚拟API
  dio.get('https://pub.dev');
  dio.get('https://jsonplaceholder.typicode.com/todos/1');

  /// 记录一条普通日志
  QaLogger().log('This is a log message');

  /// 记录一条错误日志
  QaLogger().logError('This is an error message');

  print("打开浏览器并访问 http://localhost:3000 查看网络调用和日志");

  for (int i = 2; i < 10; i++) {
    await Future.delayed(Duration(seconds: 1));
    dio.get('https://jsonplaceholder.typicode.com/todos/$i');
  }

  // 现在打开浏览器并访问 http://localhost:3000 查看网络调用和日志
}

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

1 回复

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


当然,以下是一个关于如何在Flutter项目中使用qa_logger插件进行日志记录的示例代码。qa_logger是一个强大的日志记录插件,它允许开发者以不同的日志级别(如INFO、DEBUG、ERROR等)记录日志,并支持将日志输出到控制台、文件以及远程服务器。

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

dependencies:
  flutter:
    sdk: flutter
  qa_logger: ^最新版本号  # 请替换为实际最新版本号

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

接下来,你可以在你的Flutter项目中配置和使用qa_logger。以下是一个简单的示例:

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

void main() {
  // 初始化Logger
  Logger.init(
    level: LogLevel.verbose, // 设置日志级别
    printToConsole: true,    // 是否输出到控制台
    writeToFile: true,       // 是否写入文件
    filePath: 'app_logs.txt',// 日志文件路径
    // 如果需要发送到远程服务器,可以配置remoteLogger参数
  );

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('QA Logger Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: _logMessages,
            child: Text('Log Messages'),
          ),
        ),
      ),
    );
  }

  void _logMessages() {
    // 记录不同级别的日志
    Logger.verbose('This is a verbose log message.');
    Logger.debug('This is a debug log message.');
    Logger.info('This is an info log message.');
    Logger.warn('This is a warning log message.');
    Logger.error('This is an error log message.');
    Logger.wtf('This is a what a terrible failure log message.');

    // 你也可以记录对象或异常
    try {
      throw Exception('This is an exception being logged.');
    } catch (e, stackTrace) {
      Logger.error('Caught an exception:', e, stackTrace: stackTrace);
    }
  }
}

在这个示例中,我们完成了以下步骤:

  1. pubspec.yaml文件中添加了qa_logger依赖。
  2. main函数中初始化了Logger,设置了日志级别、是否输出到控制台、是否写入文件以及日志文件路径。
  3. 创建了一个简单的Flutter应用,其中包含一个按钮,点击按钮时会记录不同级别的日志消息。
  4. 展示了如何记录异常信息。

运行这个应用并点击按钮后,你应该能够在控制台和指定的日志文件中看到记录的日志信息。根据qa_logger插件的文档,你还可以进一步配置远程日志记录等功能。

回到顶部