activity_logger 0.1.1
activity_logger: ^0.1.1 copied to clipboard
A lightweight, structured application activity logger for Dart and Flutter applications.
import 'package:activity_logger/activity_logger.dart';
import 'package:flutter/material.dart';
/// A custom in-memory [LogSink] example.
class MemoryLogSink implements LogSink {
/// Accumulated log entries stored in memory.
final List<LogEntry> logs = [];
@override
void write(LogEntry entry) {
logs.add(entry);
}
}
void main() {
final memorySink = MemoryLogSink();
// Configure global activity logger
ActivityLogger.configure(
enabled: true,
debugModeOnly: false,
minimumLogLevel: LogLevel.debug,
showTimestamp: true,
showClassName: true,
sinks: [const ConsoleLogSink(), memorySink],
);
runApp(ExampleApp(memorySink: memorySink));
}
/// Example Flutter app demonstrating usage of [ActivityLogger].
class ExampleApp extends StatelessWidget {
/// The in-memory log sink instance used for demonstration.
final MemoryLogSink memorySink;
/// Creates an [ExampleApp] instance.
const ExampleApp({super.key, required this.memorySink});
@override
Widget build(BuildContext context) {
const sessionLog = ActivityLogger('SessionService');
sessionLog.info('Application initialized');
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: const Text('Activity Logger Example')),
body: Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: [
ElevatedButton(
onPressed: () {
sessionLog.debug('User clicked debug check');
sessionLog.info('User session active');
sessionLog.success('Profile loaded successfully');
sessionLog.warning('Network latency elevated');
},
child: const Text('Emit Sample Logs'),
),
const SizedBox(height: 12),
ElevatedButton(
onPressed: () {
try {
throw Exception('Simulated network error');
} catch (e, stackTrace) {
sessionLog.error(
'Failed to fetch user data',
error: e,
stackTrace: stackTrace,
);
}
},
child: const Text('Simulate Error Log'),
),
],
),
),
),
);
}
}