logger top-level property
A flexible and centralized logger that supports multiple logging strategies.
StrategicLogger is designed to handle logging across various levels and strategies,
allowing for detailed logging control throughout an application. It ensures that only a single
instance of the logger is initialized and used throughout the application lifecycle.
The logger works out-of-the-box without initialization. If used before initialize() is called,
it auto-initializes with a ConsoleLogStrategy at debug level and prints a warning.
Call initialize() for full configuration with multiple strategies.
All logging methods (log, info, error, fatal, debug, warning, verbose)
are synchronous (return void) and use fire-and-forget via an internal queue.
Features:
- Auto-initialization with ConsoleLogStrategy (no crash on first use)
- Synchronous logging API (no
awaitrequired) - Isolate-based processing for heavy operations
- Performance monitoring and metrics
- Modern console formatting with colors and emojis
- Async queue with backpressure control
Example:
// Works immediately - auto-initializes with ConsoleLogStrategy
logger.info('Application started.');
// For full configuration, call initialize()
await logger.initialize(strategies: [ConsoleLogStrategy()], level: LogLevel.info);
logger.info('Now using explicit configuration.');
Implementation
StrategicLogger logger = StrategicLogger();