setMinimumLogLevel method

  1. @override
void setMinimumLogLevel(
  1. LogLevel level
)
override

Updates the minimum log level at runtime.

Use this to reconfigure logging after feature flags are available, e.g. from a LaunchDarkly flag during app pre-initialization.

Example:

final logger = LittleFishCore.instance.get<LoggerService>();
logger.setMinimumLogLevel(LogLevel.debug);

Implementation

@override
void setMinimumLogLevel(LogLevel level) {
  try {
    if (_logger == null) return;

    final currentSettings = settings;
    final newSettings = LoggerSettings(
      minimumLogLevel: level,
      enableConsoleOutput: currentSettings?.enableConsoleOutput ?? true,
      enableFileOutput: currentSettings?.enableFileOutput ?? false,
      printer: currentSettings?.printer ?? LoggerPrinter.simple,
    );

    // Update stored settings with the new level
    updateSettings(newSettings);

    // Preserve the old logger in case recreation fails, so we don't
    // permanently lose logging capability.
    final oldLogger = _logger;
    _logger = null;
    onInitialise(newSettings);

    // If onInitialise failed silently (its own try/catch swallows errors),
    // _logger will still be null — restore both the previous logger and
    // settings so the reported level stays consistent with actual behaviour.
    if (_logger == null) {
      _logger = oldLogger;
      if (currentSettings != null) {
        updateSettings(currentSettings);
      }
    }
  } catch (e) {
    // Use debugPrint here as the logger itself may be in a broken state
    debugPrint('DefaultLogger: failed to set minimum log level, error: $e');
  }
}