import 'package:flutter/foundation.dart'; import 'log_config.dart'; import 'log_entry.dart'; import 'log_service.dart'; LogService? _globalLogService; class Logger { final String module; final LogService? _service; final bool _isNoOp; Logger(this.module, this._service) : _isNoOp = _service == null; factory Logger.get(String module) { return Logger(module, _globalLogService); } static void setLogService(LogService service) { _globalLogService = service; } static LogService? _ensureService() { return _globalLogService; } void debug({ required String message, Map? extra, StackTrace? stackTrace, }) { if (_isNoOp) return; _service!.debug( message: message, module: module, extra: extra ?? {}, stackTrace: stackTrace, ); } void info({ required String message, Map? extra, StackTrace? stackTrace, }) { if (_isNoOp) return; _service!.info( message: message, module: module, extra: extra ?? {}, stackTrace: stackTrace, ); } void warning({ required String message, Map? extra, StackTrace? stackTrace, }) { if (_isNoOp) return; _service!.warning( message: message, module: module, extra: extra ?? {}, stackTrace: stackTrace, ); } void error({ required String message, required Object error, required StackTrace stackTrace, Map? extra, }) { if (_isNoOp) { debugPrint('[$module] ERROR: $message, error: $error'); return; } _service!.error( message: message, error: error, stackTrace: stackTrace, module: module, extra: extra, ); } } Logger getLogger(String module) => Logger.get(module);