igloo_dio_logger 1.0.0 copy "igloo_dio_logger: ^1.0.0" to clipboard
igloo_dio_logger: ^1.0.0 copied to clipboard

A beautiful HTTP request/response logger for Dio with ANSI colors, emojis, and advanced filtering options.

example/main.dart

import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:igloo_dio_logger/igloo_dio_logger.dart';

void main() async {
  // Create Dio instance
  final dio = Dio(
    BaseOptions(
      baseUrl: 'https://jsonplaceholder.typicode.com',
      connectTimeout: const Duration(seconds: 5),
      receiveTimeout: const Duration(seconds: 3),
    ),
  );

  // Add Igloo Dio Logger
  dio.interceptors.add(
    IglooDioLogger(
      logRequestHeader: true,
      logRequestBody: true,
      logResponseHeader: false,
      logResponseBody: true,
      logErrors: true,
      maxWidth: 90,
    ),
  );

  debugPrint('═══════════════════════════════════════════════════════');
  debugPrint('Example 1: GET Request with Query Params');
  debugPrint('═══════════════════════════════════════════════════════\n');

  try {
    await dio.get('/posts', queryParameters: {'userId': 1, 'limit': 5});
  } catch (e) {
    debugPrint('Error: $e');
  }

  debugPrint('\n═══════════════════════════════════════════════════════');
  debugPrint('Example 2: POST Request with Body');
  debugPrint('═══════════════════════════════════════════════════════\n');

  try {
    await dio.post('/posts', data: {
      'title': 'foo',
      'body': 'bar',
      'userId': 1,
    });
  } catch (e) {
    debugPrint('Error: $e');
  }

  debugPrint('\n═══════════════════════════════════════════════════════');
  debugPrint('Example 3: 404 Not Found');
  debugPrint('═══════════════════════════════════════════════════════\n');

  try {
    await dio.get('/posts/999999');
  } catch (e) {
    debugPrint('Caught error (expected)');
  }

  debugPrint('\n═══════════════════════════════════════════════════════');
  debugPrint('Example 4: With Endpoint Filtering');
  debugPrint('═══════════════════════════════════════════════════════\n');

  final filteredDio = Dio(
    BaseOptions(baseUrl: 'https://jsonplaceholder.typicode.com'),
  );

  filteredDio.interceptors.add(
    IglooDioLogger(
      includeEndpoints: [r'/posts.*'],       // Only log /posts endpoints
      slowRequestThresholdMs: 100,           // Only log slow requests (>100ms)
    ),
  );

  try {
    await filteredDio.get('/posts/1');
    await filteredDio.get('/users/1');  // This won't be logged (filtered out)
  } catch (e) {
    debugPrint('Error: $e');
  }

  debugPrint('\n✅ All examples completed!');
}
3
likes
140
points
21
downloads

Publisher

verified publisherigloodev.in

Weekly Downloads

A beautiful HTTP request/response logger for Dio with ANSI colors, emojis, and advanced filtering options.

Repository (GitHub)
View/report issues

Topics

#dio #logging #http #networking #debugging

Documentation

API reference

License

MIT (license)

Dependencies

dio, flutter

More

Packages that depend on igloo_dio_logger