loglens 0.5.0
loglens: ^0.5.0 copied to clipboard
A flexible, extensible logging utility with dynamic modules/layers, persistence, and a simple console UI.
import 'package:flutter/material.dart';
import 'package:loglens/loglens.dart';
import 'package:loglens_flutter/loglens_flutter.dart';
enum LogModules {
auth,
pay,
}
enum LogLayers { ui, dataSource }
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await LogLens.init(
store: SharedPrefsLoggerStore(),
defaultModules: LogModules.values,
defaultLayers: LogLayers.values,
onLog: (log) => print(log.message),
// debugGuard defaults to true; set false to allow logging in release builds.
);
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const ConsoleDemo(),
);
}
}
class ConsoleDemo extends StatelessWidget {
const ConsoleDemo({super.key});
@override
Widget build(BuildContext context) {
final controller = FloatingLogConsoleController();
return Scaffold(
appBar: AppBar(title: const Text('LogLens Example')),
body: ListView(
padding: const EdgeInsets.all(16),
children: [
const Text('''Guide:
1. Initialize: LogLens.init()
2. Log: LogLens.i(message, module, layer)
3. File names are resolved from StackTrace automatically
'''),
const SizedBox(height: 8),
FilledButton(
onPressed: () => controller.toggle(context),
child: const Text('Toggle Floating Log Window'),
),
const SizedBox(height: 8),
FilledButton.tonal(
onPressed: () {
LogLens.i('User pressed login button', LogModules.auth, LogLayers.ui);
LogLens.e('UserLogin Failed', LogModules.auth, LogLayers.dataSource);
LogLens.i(
'User pressed pay button, paid \$100 \nhaherroreoreeeeasdjanjshsvgyqvdgfqcdgqvdsujhbhcfdukvdgfbkvhdfbvdfvda \n haha \n hehehe erroreoreeeeasdjanjshsvgyqvdgfqcdgqvdsujhbhcfdukvdgfbkvhdfbvdfvd',
LogModules.pay,
LogLayers.ui,
);
},
child: const Text('Write Sample Logs'),
),
const SizedBox(height: 8),
FilledButton.tonal(
onPressed: () {
Navigator.of(context).push(
MaterialPageRoute(builder: (_) => const LogConsolePage()),
);
},
child: const Text('Open Full Console'),
),
],
),
);
}
}