DioLoggerPlus
DioLoggerPlus is a custom logging interceptor for the Dio HTTP client in Flutter. It helps developers easily debug HTTP requests and responses by printing clean, formatted logs in the console.
β¨ Features
- β Logs HTTP requests and responses
 - π¦ Pretty-prints request/response bodies
 - πΈ Logs request headers
 - β Logs errors with status and response body
 - π§© Optional compact or indented JSON
 - π Fully customizable
 - π Supports debug-only logging (enabled via 
kDebugMode) 
π¦ Installation
Add dio to your pubspec.yaml:
dependencies:
  dio: ^5.0.0
Then copy the DioLoggerPlus class into your project.
π Usage
Add the interceptor to your Dio instance:
import 'package:dio/dio.dart';
import 'dio_logger_plus.dart'; // import your class
final dio = Dio();
dio.interceptors.add(DioLoggerPlus(
  request: true,
  requestHeader: true,
  requestBody: true,
  responseBody: true,
  error: true,
  compact: true,
  maxWidth: 90,
  isOnlyDebug: true,
));
βοΈ Configuration Options
| Parameter | Type | Default | Description | 
|---|---|---|---|
request | 
bool | 
true | 
Logs HTTP method and URL | 
requestHeader | 
bool | 
true | 
Logs request headers | 
requestBody | 
bool | 
true | 
Logs request body | 
responseBody | 
bool | 
true | 
Logs response body | 
error | 
bool | 
true | 
Logs errors and error bodies | 
compact | 
bool | 
true | 
Minimized JSON indentation | 
maxWidth | 
int | 
90 | 
(Reserved) Max width of the log lines | 
isOnlyDebug | 
bool | 
true | 
Enables logging only in debug mode | 
π§ͺ Example Output
ββββββββ π€ REQUEST [2025-06-11 14:32:10] βββββββ
β β‘οΈ GET https://api.example.com/user/123
β πΈ Headers:
β {
β   "Authorization": "Bearer token123"
β }
β π¦ Body:
β {
β   "email": "test@example.com"
β }
ββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββ β
 RESPONSE (200 OK) [+123ms] ββββββββββ
β URL: https://api.example.com/user/123
β π¦ Body:
β {
β   "id": 123,
β   "name": "John Doe"
β }
ββββββββββββββββββββββββββββββββββββββββββββββββ
π Debug-Only Logging
By default, logs are shown only in debug mode (kDebugMode). To enable logs in release mode, set isOnlyDebug: false.