Flutter网络日志记录插件super_network_logger的使用

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

Flutter网络日志记录插件super_network_logger的使用

super_network_logger

logo

Super Network Logger 是一个用于记录网络请求的日志拦截器,支持与 Dio 一起使用。它提供了格式化、颜色样式和 JSON 支持,并且完全可自定义。

功能特性

  • 格式化支持
  • 颜色样式支持
  • JSON 支持
  • 完全可自定义

使用方法

要使用 super_network_logger,只需将其添加到 Dio 的拦截器中即可。以下是一个完整的示例代码,展示了如何配置和使用 super_network_logger

示例代码

import 'dart:developer';
import 'package:dio/dio.dart';
import 'package:super_network_logger/super_network_logger.dart';

void main() async {
  // 创建一个 Dio 实例
  final Dio dio = Dio();

  // 添加 SuperNetworkLogger 拦截器
  dio.interceptors.add(SuperNetworkLogger());

  // 可选的自定义配置
  dio.interceptors.add(
    SuperNetworkLogger(
      logError: true, // 是否记录错误日志
      logRequest: true, // 是否记录请求日志
      logResponse: true, // 是否记录响应日志
      logErrorBody: true, // 是否记录错误的响应体
      logRequestBody: true, // 是否记录请求体
      logResponseBody: true, // 是否记录响应体
      logErrorResponseHeader: true, // 是否记录错误的响应头
      logRequestHeader: true, // 是否记录请求头
      logResponseHeader: true, // 是否记录响应头
      compact: true, // 是否紧凑模式
      maxWidth: 100, // 日志的最大宽度
      errorStyle: [Styles.RED, Styles.BLINK], // 错误日志的样式
      requestStyle: [Styles.YELLOW], // 请求日志的样式
      responseStyle: [Styles.GREEN], // 响应日志的样式
      logName: "SuperNetworkLogger", // 日志名称
    ),
  );

  try {
    // 发送 POST 请求
    await dio.post(
      'https://jsonplaceholder.typicode.com/posts',
      data: {
        'title': 'foo',
        'body': 'bar',
        'userId': 1,
        'info': {
          'name': 'joseph',
          'age': 20,
        },
      },
      options: Options(
        headers: {
          'accessToken':
              'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzNDU2Nzg5LCJuYW1lIjoiSm9zZXBoIn0.OpOSSw7e485LOP5PrzScxHb7SR6sAOMRckfFwi4rp7o'
        },
      ),
      queryParameters: {
        '_limit': 5,
        '_page': 1,
        '_sort': 'id',
      },
    );
  } catch (e) {
    // 捕获并记录异常
    log(e.toString());
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter项目中使用super_network_logger插件来记录网络日志的示例代码。这个插件可以帮助你捕获和记录HTTP请求和响应的详细信息,非常适合调试和监控网络活动。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  super_network_logger: ^latest_version  # 请替换为最新的版本号

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

2. 配置super_network_logger

在你的Flutter应用的入口文件(通常是main.dart)中配置super_network_logger。这里是一个基本的配置示例:

import 'package:flutter/material.dart';
import 'package:dio/dio.dart';
import 'package:super_network_logger/super_network_logger.dart';

void main() {
  // 创建Dio实例
  final Dio dio = Dio();

  // 配置super_network_logger
  final SuperNetworkLogger networkLogger = SuperNetworkLogger(
    dio: dio,
    // 自定义日志输出格式(可选)
    logPrint: (log) {
      print(log);
    },
    // 是否启用请求日志(可选,默认为true)
    enableRequestLog: true,
    // 是否启用响应日志(可选,默认为true)
    enableResponseLog: true,
    // 是否启用错误日志(可选,默认为true)
    enableErrorLog: true,
    // 是否对请求体和响应体进行格式化(可选,默认为true)
    requestBodyFormat: true,
    responseBodyFormat: true,
    // 请求头和响应头的过滤规则(可选)
    headersFilter: (String key) {
      return ['Authorization'].contains(key);
    },
  );

  // 使用带有日志记录的dio实例
  runApp(MyApp(dio: dio));
}

class MyApp extends StatelessWidget {
  final Dio dio;

  MyApp({required this.dio});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Network Logger Demo'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () async {
              try {
                Response response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');
                print('Response Data: ${response.data}');
              } catch (e) {
                print('Error: $e');
              }
            },
            child: Text('Fetch Data'),
          ),
        ),
      ),
    );
  }
}

3. 运行应用

现在你可以运行你的Flutter应用。当你点击按钮发起网络请求时,super_network_logger将会捕获并打印出HTTP请求和响应的详细信息到控制台。

注意事项

  • 确保你已经在AndroidManifest.xmlInfo.plist文件中配置了必要的网络权限。
  • 你可以根据实际需求调整SuperNetworkLogger的配置,比如是否格式化请求体和响应体、是否过滤特定的请求头或响应头等。

这个示例展示了如何在Flutter项目中使用super_network_logger来记录网络日志。通过这种方式,你可以更轻松地调试和监控你的网络请求。

回到顶部