offline_logger 0.0.1
offline_logger: ^0.0.1 copied to clipboard
Offline-first logging and crash reporting SDK for Flutter apps
๐ฆ Offline Logger SDK โ Enterprise Documentation #
๐ Overview #
Offline Logger is a production-grade, offline-first observability SDK for Flutter applications.
It enables:
- Reliable logging in low/no internet environments
- Crash tracking and debugging
- Automatic batching and syncing
- Scalable observability for large deployments
๐งฑ Architecture #
App Layer
โ
OfflineLogger SDK
โ
Hive Storage (Local DB)
โ
Sync Engine (Retry + Batch)
โ
Backend API
โ๏ธ Initialization #
init(LoggerConfig config) #
Purpose #
Initializes entire SDK system.
Responsibilities #
- Initializes Hive
- Creates SyncService
- Generates sessionId
- Fetches device info
- Starts heartbeat
- Sets lifecycle + connectivity listeners
- Flushes pre-init logs
Usage #
await OfflineLogger.init(
LoggerConfig(
apiEndpoint: "https://api.yourserver.com/logs",
enableDebugLogs: true,
),
);
๐ง Logging APIs #
log() #
General logging
OfflineLogger.log("User clicked button");
error() #
Recoverable errors
OfflineLogger.error("API failed");
crash() #
Critical crash logging
OfflineLogger.crash(error, stack);
๐ท๏ธ Tagged Logging #
logWithTag() #
OfflineLogger.logWithTag("VIDEO", "Playback started");
errorWithTag() #
OfflineLogger.errorWithTag("API", "Login failed");
๐งพ Metadata #
setGlobalMetadata() #
Adds metadata to all logs
OfflineLogger.setGlobalMetadata({
"userId": "123",
"schoolId": "UP_1023",
});
restartSession() #
Creates new session
OfflineLogger.restartSession();
๐ Sync System #
sync() #
Triggers log upload
Features #
- Batch processing
- Retry with backoff
- Timeout protection
- Sync locking
safeSync() #
Safe wrapper
await OfflineLogger.safeSync();
flush() #
Force upload logs
await OfflineLogger.flush();
๐ค Data Access #
exportLogs() #
final logs = await OfflineLogger.exportLogs();
๐งน Cleanup #
dispose() #
await OfflineLogger.dispose();
๐ฑ Crash Handling #
runAppWithLogger() #
Wrap app
OfflineLogger.runAppWithLogger(() {
runApp(MyApp());
});
๐ Internal Mechanisms #
Pre-init Queue #
- Stores logs before init
- Max size: 100
- Auto flushed
Sync Engine #
- Batching
- Retry
- Timeout (15s)
Connectivity #
- Debounced sync trigger
Heartbeat #
- Runs every 5 min
๐ฆ Log Structure #
{
"id": "uuid",
"type": "info",
"message": "...",
"priority": "low",
"metadata": {},
"timestamp": "ISO",
"isSynced": false
}
๐ Captured Data #
Automatic #
- Flutter errors
- Unhandled exceptions
- Lifecycle events
- Connectivity changes
Manual #
- User actions
- API failures
- Business logic
โ ๏ธ Limitations #
- No native crash capture
- No ANR detection
- No performance monitoring
๐ง Best Practices #
Do #
- Log meaningful events
- Use metadata
- Use tagging
Avoid #
- Sensitive data
- Large payloads
- Over-logging
๐ Production Readiness #
โ Offline-first
โ Retry + batching
โ Scalable
โ Memory-safe
โ No log loss
๐ Summary #
Offline Logger provides a complete observability layer for Flutter apps, optimized for low-connectivity environments and large-scale deployments.