flutter_live_logger 0.2.0 copy "flutter_live_logger: ^0.2.0" to clipboard
flutter_live_logger: ^0.2.0 copied to clipboard

High-performance real-time logging solution for Flutter applications

Flutter Live Logger #

pub package License: MIT

Production-ready real-time logging solution for Flutter applications

Flutter Live Logger is a comprehensive logging library designed for Flutter apps in production. It provides multiple transport layers, persistent storage, automatic navigation tracking, and offline support with a clean, developer-friendly API.

πŸ“– Languages: English β€’ ν•œκ΅­μ–΄


✨ Features #

🎯 Core Capabilities #

  • πŸš€ High Performance: 400,000+ logs/second throughput
  • 🌐 Cross-Platform: iOS, Android, Web, macOS, Windows, Linux
  • πŸ”₯ Multiple Transport Layers: Memory, File, HTTP transport options
  • πŸ’Ύ Persistent Storage: SQLite and memory-based storage with querying
  • πŸ“± Auto Navigation Tracking: Automatic screen transition logging
  • πŸ”„ Offline Support: Queue logs offline and sync when connected
  • ⚑ Smart Batching: Configurable batching for efficiency
  • πŸŽ›οΈ Configurable: Multiple environment configurations (dev/prod/test)

πŸ› οΈ Developer Experience #

  • ⚑ Easy Setup: Initialize with one line of code
  • πŸ“š Complete API: Comprehensive dartdoc documentation
  • πŸ”’ Type Safe: Full null safety and strong typing
  • πŸ§ͺ Well Tested: 95%+ test coverage with 35+ comprehensive tests
  • 🌍 Cross Platform: iOS, Android, Web, Desktop support

πŸš€ Quick Start #

1. Add Dependency #

dependencies:
  flutter_live_logger: ^0.2.0

2. Initialize the Logger #

import 'package:flutter_live_logger/flutter_live_logger.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  
  // Initialize with transports
  await FlutterLiveLogger.init(
    config: LoggerConfig(
      logLevel: LogLevel.debug,
      environment: 'development',
      transports: [
        MemoryTransport(maxEntries: 1000),
        HttpTransport(
          config: HttpTransportConfig.withApiKey(
            endpoint: 'https://your-api.com/logs',
            apiKey: 'your-api-key',
          ),
        ),
      ],
    ),
  );
  
  runApp(MyApp());
}

3. Add Navigation Tracking #

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'My App',
      navigatorObservers: [
        FlutterLiveLoggerNavigatorObserver(
          enableDurationTracking: true,
          enableBreadcrumbs: true,
        ),
      ],
      home: HomeScreen(),
    );
  }
}

4. Start Logging #

class HomeScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Flutter Live Logger Demo')),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // Simple logging
            FlutterLiveLogger.info('User clicked button');
            
            // Event tracking with structured data
            FlutterLiveLogger.event('button_click', {
              'button_id': 'main_cta',
              'screen': 'home',
              'timestamp': DateTime.now().toIso8601String(),
            });
            
            // Error logging with context
            try {
              throw Exception('Demo error');
            } catch (error, stackTrace) {
              FlutterLiveLogger.error(
                'Operation failed',
                data: {'operation': 'demo'},
                error: error,
                stackTrace: stackTrace,
              );
            }
          },
          child: Text('Test Logging'),
        ),
      ),
    );
  }
}

πŸ“– Advanced Usage #

Configuration Options #

// Development Configuration
await FlutterLiveLogger.init(
  config: LoggerConfig(
    logLevel: LogLevel.debug,
    environment: 'development',
    enableOfflineSupport: true,
    transports: [
      MemoryTransport(maxEntries: 1000),
      HttpTransport(
        config: HttpTransportConfig.withApiKey(
          endpoint: 'https://api.example.com/logs',
          apiKey: 'dev-api-key',
        ),
      ),
    ],
  ),
);

// Production Configuration  
await FlutterLiveLogger.init(
  config: LoggerConfig(
    logLevel: LogLevel.info,
    environment: 'production',
    enableOfflineSupport: true,
    batchSize: 50,
    flushInterval: Duration(seconds: 10),
    transports: [
      HttpTransport(
        config: HttpTransportConfig.withApiKey(
          endpoint: 'https://api.example.com/logs',
          apiKey: 'prod-api-key',
          batchSize: 50,
          timeout: Duration(seconds: 30),
          maxRetries: 3,
        ),
      ),
      FileTransport(
        config: FileTransportConfig(
          directory: '/app/logs',
          maxFileSize: 10 * 1024 * 1024, // 10MB
          maxFiles: 5,
        ),
      ),
    ],
  ),
);

Transport Layers #

// Memory Transport (for development/testing)
final memoryTransport = MemoryTransport(
  maxEntries: 1000,
);

// File Transport (for local persistence)
final fileTransport = FileTransport(
  config: FileTransportConfig(
    directory: '/app/logs',
    filePrefix: 'app_log',
    maxFileSize: 10 * 1024 * 1024, // 10MB
    maxFiles: 5,
    enableRotation: true,
  ),
);

// HTTP Transport (for remote logging with full web support)
final httpTransport = HttpTransport(
  config: HttpTransportConfig.withApiKey(
    endpoint: 'https://api.example.com/logs',
    apiKey: 'your-api-key',
    batchSize: 10,
    timeout: Duration(seconds: 30),
    maxRetries: 3,
  ),
);

Storage Options #

// Memory Storage (fast, non-persistent)
final memoryStorage = MemoryStorage(maxEntries: 10000);

// SQLite Storage (persistent, queryable)
final sqliteStorage = SQLiteStorage(
  path: 'app_logs.db',
  maxEntries: 100000,
);

🌐 Web Platform Support #

Flutter Live Logger fully supports web platforms with CORS-enabled HTTP transport:

// Works seamlessly on web
HttpTransport(
  config: HttpTransportConfig.withApiKey(
    endpoint: 'https://api.example.com/logs',
    apiKey: 'your-key',
  ),
)

Note: Server must have proper CORS headers configured:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Origin, Content-Type, X-API-Key

πŸ“Š Performance Benchmarks #

Benchmarked performance metrics:

  • Throughput: 434,783 logs/second
  • Initialization: <50ms startup time
  • Memory: <10MB peak usage
  • Cross-platform: Consistent performance across all platforms

πŸ“Š Dashboard Integration #

For real-time monitoring and analytics, use the companion dashboard:

dev_dependencies:
  flutter_live_logger_dashboard: ^0.2.0

πŸ“± Platform Support #

Platform Support Notes
iOS βœ… Full support
Android βœ… Full support
Web βœ… CORS required for HTTP transport
macOS βœ… Full support
Windows βœ… Full support
Linux βœ… Full support

πŸ§ͺ Testing #

The package includes comprehensive test coverage:

flutter test

Test Results: 35/35 tests passing (100%)

πŸ“š Examples #

Check out the example app for a complete implementation showing:

  • Basic logging setup
  • HTTP transport configuration (web compatible)
  • Navigator observation
  • Error handling
  • Performance monitoring

🀝 Contributing #

We welcome contributions! Please see our Contributing Guide for details.

πŸ“„ License #

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“ž Support #

4
likes
140
points
66
downloads

Publisher

verified publishercurogom.dev

Weekly Downloads

High-performance real-time logging solution for Flutter applications

Repository (GitHub)
View/report issues
Contributing

Topics

#logging #flutter #debugging #monitoring #analytics

Documentation

Documentation
API reference

License

MIT (license)

Dependencies

flutter, http, path, sqflite

More

Packages that depend on flutter_live_logger