Flutter Live Logger
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.
β¨ 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.
π Related Packages
- flutter_live_logger_dashboard - Web dashboard for real-time monitoring
π Support
- π File an issue
- π¬ Discussions
- π§ Email: support@flutterlivelogger.com
Libraries
- flutter_live_logger
- Flutter Live Logger - Real-time logging solution for Flutter applications