Flutter网络请求日志插件dio_logger的使用

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

Flutter网络请求日志插件dio_logger的使用

dio_logger 是一个用于 Dio 的简单日志拦截器。

使用:

首先,你需要在你的项目中添加 dio_logger 依赖。你可以在 pubspec.yaml 文件中添加以下内容:

dependencies:
  dio: ^4.0.0
  dio_logger: ^0.2.0

然后,在你的 Dart 代码中初始化 Dio 并添加 DioLoggerInterceptor 拦截器:

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

void main() async {
  final dio = Dio();

  // 添加日志拦截器
  dio.interceptors.add(dioLoggerInterceptor);

  // 发起网络请求
  try {
    final response = await dio.get("http://dummy.restapiexample.com/api/v1/employee/1");
    print(response.data);
  } catch (e) {
    print(e);
  }
}

示例输出:

当你发起网络请求时,dio_logger 会在控制台打印出详细的日志信息。例如:

┌------------------------------------------------------------------------------
| [DIO] Request: GET http://dummy.restapiexample.com/api/v1/employee/1
| {}
| Headers:
| content-type: application/json; charset=utf-8
| accept: application/json; charset=utf-8
| cache-control: no-cache
├------------------------------------------------------------------------------
| [DIO] Response [code 200]: {"status":"success","data":{"id":"1","employee_name":"Tiger Nixon","employee_salary":"320800","employee_age":"61","profile_image":""}}
└------------------------------------------------------------------------------

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

1 回复

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


在Flutter中,dio_logger 是一个用于记录 Dio 网络请求日志的插件。它可以帮助开发者更方便地调试和分析网络请求,输出请求的详细信息,如请求方法、URL、请求头、请求体、响应状态码、响应头、响应体等。

安装 dio_logger

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

dependencies:
  flutter:
    sdk: flutter
  dio: ^4.0.0
  dio_logger: ^3.0.0

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

使用 dio_logger

  1. 导入依赖
import 'package:dio/dio.dart';
import 'package:dio_logger/dio_logger.dart';
  1. 创建 Dio 实例并添加 dio_logger 拦截器
void main() {
  Dio dio = Dio();

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

  // 发起网络请求
  fetchData(dio);
}

void fetchData(Dio dio) async {
  try {
    Response response = await dio.get('https://jsonplaceholder.typicode.com/posts/1');
    print(response.data);
  } catch (e) {
    print(e);
  }
}
  1. 配置 dio_logger

dio_logger 提供了多种配置选项,你可以根据需要进行自定义:

dio.interceptors.add(
  dioLoggerInterceptor(
    request: true, // 打印请求信息
    requestHeader: true, // 打印请求头
    requestBody: true, // 打印请求体
    responseHeader: true, // 打印响应头
    responseBody: true, // 打印响应体
    error: true, // 打印错误信息
    compact: true, // 是否压缩日志输出
    maxWidth: 90, // 日志输出最大宽度
  ),
);

示例输出

当你发起一个网络请求时,dio_logger 会在控制台中输出类似以下的日志:

┌──────────────────────────────────────────────────────────────────────────────
 Request: GET https://jsonplaceholder.typicode.com/posts/1
 Headers:
 {}
└──────────────────────────────────────────────────────────────────────────────
┌──────────────────────────────────────────────────────────────────────────────
 Response: 200 OK
 Headers:
 {
   "content-type": "application/json; charset=utf-8",
   "cache-control": "public, max-age=14400"
 }
 Body:
 {
   "userId": 1,
   "id": 1,
   "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
   "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
 }
└──────────────────────────────────────────────────────────────────────────────

自定义日志输出

你还可以通过 logPrint 参数来自定义日志输出方式:

dio.interceptors.add(
  dioLoggerInterceptor(
    logPrint: (log) {
      // 自定义日志输出方式
      print('Custom Log: $log');
    },
  ),
);
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!