π talker_rhttp_logger
A powerful HTTP logging interceptor for rhttp that seamlessly integrates with Talker. Debug your HTTP traffic with detailed, customizable logging!
β¨ Key Features
- π Comprehensive HTTP Logging - Log requests, responses, and errors
- π¨ Colorful Output - Customizable colors for different log types
- β‘ Request/Response Filtering - Control exactly what gets logged
- π Flexible Configuration - Fine-tune every aspect of logging
- π― Performance Focused - Minimal overhead logging
π¦ Installation
Add to your pubspec.yaml
:
dependencies:
talker_rhttp_logger: ^latest_version # Replace with latest version
Then run:
flutter pub get
π Quick Start
import 'package:talker_rhttp_logger/talker_rhttp_logger.dart';
import 'package:talker/talker.dart';
import 'package:rhttp/rhttp.dart';
void main() {
// Initialize Talker
final talker = Talker();
// Create HTTP client with logging
final client = RHttpClient(
interceptors: [
TalkerRHttpLoggerInterceptor(
talker: talker,
),
],
);
// Make requests - logs will appear automatically!
}
βοΈ Configuration Options
Basic Configuration
final settings = TalkerRhttpLoggerSettings(
// Response logging options
printResponseData: true, // Log response body
printResponseHeaders: false, // Log response headers
printResponseMessage: true, // Log response status message
// Request logging options
printRequestData: true, // Log request body
printRequestHeaders: false, // Log request headers
// Error logging options
printErrorData: true, // Log error response body
printErrorHeaders: true, // Log error response headers
printErrorMessage: true, // Log error messages
);
final logger = TalkerRHttpLoggerInterceptor(
talker: talker,
settings: settings,
);
π¨ Custom Colors
Make your logs visually distinctive with custom colors:
final settings = TalkerRhttpLoggerSettings(
// Blue for requests
requestPen: AnsiPen()..blue(),
// Green for successful responses
responsePen: AnsiPen()..green(),
// Red for errors
errorPen: AnsiPen()..red(),
);
π― Selective Logging
Control exactly what gets logged using filter functions:
final settings = TalkerRhttpLoggerSettings(
// Filter requests
requestFilter: (request) {
// Only log API requests
return request.url.path.startsWith('/api/');
},
// Filter responses
responseFilter: (response) {
// Only log non-200 responses
return response.statusCode != 200;
},
// Filter errors
errorFilter: (error) {
// Only log timeout errors
return error.type == RhttpExceptionType.connectTimeout;
},
);
π Security Best Practices
- Minimize Sensitive Data Logging
final settings = TalkerRhttpLoggerSettings(
// Disable headers and body logging
printRequestHeaders: false,
printResponseHeaders: false,
printRequestData: false,
printResponseData: false,
);
- Filter Sensitive Endpoints
final settings = TalkerRhttpLoggerSettings(
requestFilter: (request) {
// Skip logging of sensitive endpoints
final sensitiveEndpoints = ['/auth', '/payment', '/users'];
return !sensitiveEndpoints.any(
(endpoint) => request.url.path.contains(endpoint),
);
},
);
- Selective Error Logging
final settings = TalkerRhttpLoggerSettings(
// Only log error messages, not full error data
printErrorData: false,
printErrorHeaders: false,
printErrorMessage: true,
);
π Full Settings Reference
TalkerRhttpLoggerSettings({
// Response Settings
bool printResponseData = true,
bool printResponseHeaders = false,
bool printResponseMessage = true,
// Error Settings
bool printErrorData = true,
bool printErrorHeaders = true,
bool printErrorMessage = true,
// Request Settings
bool printRequestData = true,
bool printRequestHeaders = false,
// Custom Colors
AnsiPen? requestPen,
AnsiPen? responsePen,
AnsiPen? errorPen,
// Custom Filters
bool Function(HttpRequest request)? requestFilter,
bool Function(HttpResponse response)? responseFilter,
bool Function(RhttpException exception)? errorFilter,
});
π€ Contributing
We welcome contributions! Here's how you can help:
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to your branch (
git push origin feature/amazing-feature
) - Open a Pull Request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
πββοΈ Support
- π Found a bug? Open an issue
- π‘ Have a suggestion? Create a feature request
- π Need help? Check out our discussions
Built with β€οΈ for the Flutter community by ShreemanArjun