gemmaLog function
Internal log entry point. Every plugin log routes through here.
- Release builds: silent regardless of level.
kDebugModeis a compile-timefalse, so the body is dead-code-eliminated. (Callers that interpolate a large/hot variable must still guard the CALL SITE withif (kDebugMode)to avoid building the string in release.) - Debug builds: prints when
level<= gemmaLogLevel, after sanitizing U+FFFD so it can't crashflutter 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));
}