gemmaLog function

void gemmaLog(
  1. String message, {
  2. GemmaLogLevel level = GemmaLogLevel.info,
})

Internal log entry point. Every plugin log routes through here.

  • Release builds: silent regardless of level. kDebugMode is a compile-time false, so the body is dead-code-eliminated. (Callers that interpolate a large/hot variable must still guard the CALL SITE with if (kDebugMode) to avoid building the string in release.)
  • Debug builds: prints when level <= gemmaLogLevel, after sanitizing U+FFFD so it can't crash flutter run (issue #306).

Implementation

void gemmaLog(String message, {GemmaLogLevel level = GemmaLogLevel.info}) {
  if (!kDebugMode) return;
  if (gemmaLogLevel == GemmaLogLevel.none) return;
  if (level.index > gemmaLogLevel.index) return;
  debugPrint(sanitizeForLog(message));
}