pretty_dio_clean_logger

A clean and customizable logging interceptor for Dio that prints beautifully formatted request, response, and error logs. It includes pretty_dio_clean_logger, a cleaner and more refined version of pretty_dio_logger.


✨ Features

  • Pretty formatted request & response logs
  • JSON (Map & List) pretty printing
  • Support for FormData & file uploads
  • Request/Response headers logging
  • Response time tracking
  • Error logging with details
  • Custom log printer support
  • Powerful filtering system
  • Enable/disable logs easily
  • Compact & readable output

Usage

Simply add PrettyDioCleanLogger to your dio interceptors.

Dio dio = Dio();
dio.interceptors.add(PrettyDioCleanLogger());

// customization
   dio.interceptors.add(PrettyDioCleanLogger(
        requestHeader: true,
        requestBody: true,
        responseBody: true,
        responseHeader: false,
        error: true,
        compact: true,
        maxWidth: 90,
        enabled: kDebugMode,
        filter: (options, args){
            // don't print requests with uris containing '/posts' 
            if(options.path.contains('/posts')){
              return false;
            }
            // don't print responses with unit8 list data
            return !args.isResponse || !args.hasUint8ListData;
          }
      )
    );

📸 Example Output

┌┤ Request │ POST
│  https://api.example.com/login
├────────────────────────────────────────────
│ Headers:
│ Authorization: Bearer token
├────────────────────────────────────────────
│ Body:
│ {
│   "email": "user@email.com",
│   "password": "******"
│ }
└────────────────────────────────────────────
┌┤ Response │ POST │ Status: 200 OK │ Time: 245 ms
│  https://api.example.com/login
├────────────────────────────────────────────
│ Headers:
│ content-type: application/json
│ cache-control: no-cache
├────────────────────────────────────────────
│ Body:
│ {
│   "success": true,
│   "message": "Login successful",
│   "data": {
│     "user_id": 101,
│     "name": "Raihan",
│     "token": "abc123xyz"
│   }
│ }
└────────────────────────────────────────────
┌┤ DioError │ Status: 401 Unauthorized │ Time: 180 ms
│  https://api.example.com/login
├────────────────────────────────────────────
│ Type: DioExceptionType.badResponse
├────────────────────────────────────────────
│ Body:
│ {
│   "success": false,
│   "message": "Invalid email or password"
│ }
└────────────────────────────────────────────
┌┤ DioError │ DioExceptionType.connectionTimeout
│  Connection timeout after 5000 ms
├────────────────────────────────────────────
│ Request:
│ https://api.example.com/login
└────────────────────────────────────────────

👨‍💻 Author

Raihan Sikdar

Website: raihansikdar.com
Email: raihansikdar10@gmail.com
GitHub: raihansikdar
LinkedIn: raihansikdar

🤝 Contributing

Contributions are welcome! Feel free to open issues or submit pull requests to improve this package.

📄 License

This project is licensed under the MIT License.