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.