패키지, 저장소 및 앱 카테고리 검색

GitHub 저장소thurakhant/cote_network_logger

cote_network_logger

아름다운 웹 대시보드를 통해 HTTP 네트워크 활동을 모니터링하는 플러터 개발자 도구

cote_network_logger 프로젝트 이미지
스타
7
포크
2
최근 푸시(UTC)
2025. 6. 8.
프로젝트 상태
활성

원본 README

아래는 영문 원문 스냅샷입니다. 최신 내용은 GitHub에서 확인하세요.

🚀 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

  1. Add to your pubspec.yaml:

    dependencies:
      cote_network_logger: ^1.0.5
    
  2. 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());
    }
    
  3. 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());
    
  4. 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)
  1. Run your Flutter app on iOS simulator
  2. Open browser on your Mac
  3. Navigate to: http://localhost:3000
Android Emulator
  1. Run your Flutter app on Android emulator
  2. Open browser on the emulator itself
  3. Navigate to: http://localhost:3000
Physical Devices
  1. Find your device's IP address
  2. Open browser on any device on the same network
  3. 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
  1. Go to iOS Settings → Privacy & Security → Local Network
  2. Find your app and toggle it ON
  3. 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:

  1. Add Custom Environments

    // Add your custom environments
    NetworkLoggerConfig.addCustomEnvironment('qa');
    NetworkLoggerConfig.addCustomEnvironment('beta');
    NetworkLoggerConfig.addCustomEnvironment('uat');
    
  2. 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
    
  3. 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:

  1. Release Mode Testing

    # Build release version with staging environment
    flutter build apk --release --dart-define=STAGING_ENV=true
    
  2. 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
    
  3. 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
  1. Local Development

    • Debug mode with full logging
    • Real-time request monitoring
    • Immediate feedback
  2. Staging Testing

    • Release mode with controlled logging
    • QA team access to network logs
    • Production-like environment
  3. 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.

Thura Khant Thein GitHub avatar
GitHub 작성자

Thura Khant Thein ↗

Mobile Developer

Nuos MagickoBangkok공식 웹사이트 ↗
언어DartC++CMakeSwiftCHTMLObjective-C

이 저장소가 배포한 패키지

사용 중인 의존성

의존성 목록 6 개

  • flutter{"sdk":"flutter"}
  • dio^5.4.0
  • shelf^1.4.1
  • http^1.1.0
  • flutter_test개발 의존성{"sdk":"flutter"}
  • flutter_lints개발 의존성^5.0.0

프로젝트에 맞는 저장소를 선택하려면?

사용 목적에 따라 검색하고 개발 활동을 비교한 뒤 원본 저장소에서 요구 사항을 확인하세요.

  1. 이름, 작성자 또는 설명으로 검색하고 기술 주제로 범위를 좁힙니다.
  2. 스타, 포크, 최근 푸시를 함께 비교하세요. 스타는 관심의 지표이며 품질을 보장하지 않습니다.
  3. 사용하기 전에 GitHub에서 README, 라이선스, Issues를 확인하세요.

출처 및 관리

“A repository is the most basic element of GitHub.”

GitHub Docs — About repositories ↗