cote_network_logger 1.0.9
cote_network_logger: ^1.0.9 copied to clipboard
Beautiful Flutter developer tool for real-time HTTP network monitoring with web dashboard
π CoteNetworkLogger #
A powerful Flutter package for real-time HTTP network monitoring during development and staging environments.
β¨ Features #
- π Real-time network monitoring - See HTTP requests as they happen
- π± Cross-platform support - Android, iOS, macOS, Windows, Linux
- π Web dashboard - Beautiful browser-based interface
- π¨ Material Design 3 - Modern, responsive UI
- π Auto-refresh - Smart refresh that pauses during user interaction
- πΎ Memory efficient - In-memory storage with auto-cleanup
- π Environment support - Debug, Staging, and Release modes
π οΈ Quick Start #
-
Add to your pubspec.yaml:
dependencies: cote_network_logger: ^1.0.5
-
Start the server in your main.dart:
import 'package:cote_network_logger/cote_network_logger.dart'; void main() async { WidgetsFlutterBinding.ensureInitialized(); await startNetworkLogServer(); runApp(MyApp()); }
-
Add the interceptor to your Dio instance:
import 'package:dio/dio.dart'; import 'package:cote_network_logger/cote_network_logger.dart'; final dio = Dio(); dio.interceptors.add(const CoteNetworkLogger());
-
Open the dashboard URL in your browser!
π Environment Support #
The network logger is available in the following environments:
- β Debug Mode: Always enabled during development
- β
Staging Environment: Enabled when
STAGING_ENV=true
- β
Release Mode: Can be enabled with
NETWORK_LOGGER_ENABLED=true
- β Production Environment: Disabled by default for security
Running in Different Environments #
Debug Mode (Default)
flutter run
Staging Environment
flutter run --dart-define=STAGING_ENV=true
Release Mode with Logger
flutter run --release --dart-define=NETWORK_LOGGER_ENABLED=true
Building for Different Flavors #
For Android:
# Debug flavor
flutter build apk --flavor debug
# Staging flavor
flutter build apk --flavor staging --dart-define=STAGING_ENV=true
# Production flavor
flutter build apk --flavor production
For iOS:
# Debug configuration
flutter build ios --flavor Debug
# Staging configuration
flutter build ios --flavor Staging --dart-define=STAGING_ENV=true
# Release configuration
flutter build ios --flavor Release
π± Platform Support #
iOS Simulator (Best for Mac) #
- Run your Flutter app on iOS simulator
- Open browser on your Mac
- Navigate to: http://localhost:3000
Android Emulator #
- Run your Flutter app on Android emulator
- Open browser on the emulator itself
- Navigate to: http://localhost:3000
Physical Devices #
- Find your device's IP address
- Open browser on any device on the same network
- Navigate to: http://YOUR_DEVICE_IP:3000
π§ Troubleshooting #
Dashboard Not Loading #
- Check if server is running (look for console message)
- Verify platform support
- Check environment settings
- Ensure port 3000 is not blocked
iOS Local Network Setup #
- Go to iOS Settings β Privacy & Security β Local Network
- Find your app and toggle it ON
- Run your app and try accessing the dashboard
π API Reference #
Main Functions #
// Start the network logger server
Future<bool> startNetworkLogServer()
// Stop the network logger server
Future<void> stopNetworkLogServer()
// Check if server is running
bool isNetworkLogServerRunning()
// Get dashboard URL
String? getNetworkLogDashboardUrl()
// Check platform support
bool isNetworkLoggerSupported()
Configuration #
class NetworkLoggerConfig {
// Check if logger is enabled
static bool get isEnabled
// Get current flavor/environment
static String get currentFlavor
// Check if logger is enabled in specific flavor
static bool isEnabledInFlavor(String flavor)
}
Configuration Examples #
Basic Setup
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// Start the logger (automatically handles environment)
await NetworkLogger.start();
runApp(MyApp());
}
Environment Configuration
void setupNetworkLogger() {
// Configure with predefined environments
NetworkLogger.configure(
environments: [
NetworkLoggerEnvironment.debug,
NetworkLoggerEnvironment.staging,
NetworkLoggerEnvironment.qa,
],
);
}
// Or use custom environments
NetworkLogger.configure(
environments: [
NetworkLoggerEnvironment.custom(
name: 'uat',
enableByDefault: true,
description: 'User Acceptance Testing',
),
NetworkLoggerEnvironment.custom(
name: 'preprod',
enableByDefault: true,
description: 'Pre-Production Environment',
),
],
);
Enable in Release Mode
// Enable logger in release mode for specific environments
NetworkLogger.configure(
environments: [NetworkLoggerEnvironment.staging],
enableInRelease: true,
);
Check Logger Status
// Check if logger is running
if (NetworkLogger.isRunning) {
// Get dashboard URL
final url = NetworkLogger.dashboardUrl;
print('Dashboard available at: $url');
}
Environment-Specific Behavior
// The logger automatically handles different environments:
// - Debug: Always enabled
// - Staging: Enabled by default
// - QA: Enabled by default
// - Beta: Enabled by default
// - Production: Always disabled
// - Custom: Configurable via enableByDefault
π― Use Cases #
Quick Start #
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await NetworkLogger.start();
runApp(MyApp());
}
QA Testing Setup #
void setupForQATesting() {
NetworkLogger.configure(
environments: [NetworkLoggerEnvironment.qa],
enableInRelease: true,
);
}
Multiple Environment Support #
void setupAllEnvironments() {
NetworkLogger.configure(
environments: [
NetworkLoggerEnvironment.debug,
NetworkLoggerEnvironment.staging,
NetworkLoggerEnvironment.qa,
NetworkLoggerEnvironment.beta,
],
);
}
Custom Environment #
void setupCustomEnvironment() {
NetworkLogger.configure(
environments: [
NetworkLoggerEnvironment.custom(
name: 'demo',
enableByDefault: true,
description: 'Demo Environment',
),
],
);
}
Custom Environment Support #
The network logger supports custom environment types for flexible configuration:
-
Add Custom Environments
// Add your custom environments NetworkLoggerConfig.addCustomEnvironment('qa'); NetworkLoggerConfig.addCustomEnvironment('beta'); NetworkLoggerConfig.addCustomEnvironment('uat');
-
Run with Custom Environment
# Run with QA environment flutter run --dart-define=CUSTOM_ENV=qa --dart-define=NETWORK_LOGGER_ENABLED=true # Run with Beta environment flutter run --dart-define=CUSTOM_ENV=beta --dart-define=NETWORK_LOGGER_ENABLED=true
-
Environment-Specific Behavior
- Debug: Always enabled
- Staging: Enabled by default
- Custom: Enabled when NETWORK_LOGGER_ENABLED=true
- Production: Always disabled
QA Testing in Release Mode #
The network logger is particularly useful for QA teams testing release builds in staging environment:
-
Release Mode Testing
# Build release version with staging environment flutter build apk --release --dart-define=STAGING_ENV=true
-
Enable Logger in Release
# Enable logger in release mode for staging environment flutter run --release --dart-define=STAGING_ENV=true --dart-define=NETWORK_LOGGER_ENABLED=true
-
Benefits for QA Teams
- Monitor network requests in release builds
- Debug issues in staging environment
- Test with production-like performance
- Maintain security in production
Development Workflow #
-
Local Development
- Debug mode with full logging
- Real-time request monitoring
- Immediate feedback
-
Staging Testing
- Release mode with controlled logging
- QA team access to network logs
- Production-like environment
-
Production Deployment
- Logger automatically disabled
- No performance impact
- Secure by default
π― Example #
Check out the example directory for a complete working example.
π License #
This project is licensed under the MIT License - see the LICENSE file for details.