logger top-level property

StrategicLogger logger
getter/setter pair

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 await required)
  • 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();