slimtoolkit/slim · error
unknown log-level %q
Error message
unknown log-level %q
What it means
setLogLevel validates a user-supplied log level name against a fixed whitelist (trace, debug, info, warn, error, fatal, panic). If the name doesn't match any case, it returns this error instead of setting the log level. It exists to fail fast on invalid configuration rather than silently defaulting.
Source
Thrown at pkg/app/sensor/logger.go:82
var logLevel log.Level
switch levelName {
case "trace":
logLevel = log.TraceLevel
case "debug":
logLevel = log.DebugLevel
case "info":
logLevel = log.InfoLevel
case "warn":
logLevel = log.WarnLevel
case "error":
logLevel = log.ErrorLevel
case "fatal":
logLevel = log.FatalLevel
case "panic":
logLevel = log.PanicLevel
default:
return fmt.Errorf("unknown log-level %q", levelName)
}
log.SetLevel(logLevel)
return nil
}
View on GitHub (pinned to 81940d17fa)
Solutions
- Check the exact spelling/casing of the --log-level value against the accepted set: trace, debug, info, warn, error, fatal, panic (all lowercase).
- Lowercase/trim the input before passing it to configureLogger.
- If you need a new alias, extend the switch statement in setLogLevel in pkg/app/sensor/logger.go.
Example fix
// before
configureLogger("WARNING")
// after
level := strings.ToLower(strings.TrimSpace("WARNING")) // "warning" -> use "warn" Defensive patterns
Strategy: validation
Validate before calling
var validLevels = map[string]bool{"trace":true,"debug":true,"info":true,"warn":true,"error":true,"fatal":true,"panic":true}
if !validLevels[strings.ToLower(strings.TrimSpace(level))] {
return fmt.Errorf("unsupported log-level %q", level)
}
// safe to call configureLogger(level) Try / catch
if err := configureLogger(level); err != nil {
log.Fatalf("invalid log level %q: %v", level, err)
} Prevention
- Normalize (lowercase/trim) level input from flags and config files.
- Constrain CLI flags to an enumerated list so invalid values cannot reach setLogLevel.
- Keep a test asserting every documented level name is accepted.
When it happens
Trigger: Calling configureLogger (which calls setLogLevel) with a --log-level flag or config value that is not one of the accepted level names, e.g. "verbose", "WARNING" (uppercase), "warning" (if not in the switch), or an empty string.
Common situations: Users passing case-variant names like "INFO" or "Warn", typos like "logg", or copying level names from another logging library that uses different naming (e.g. "critical", "verbose").
Understand the failure class
Background: Invalid enum value errors: "Unknown type", "Invalid scope", "must be one of" — when a string is not on the library's allowed list — this error's family across 23 libraries.
Related errors
- unknown log-format %q
- failed to set log-level: %v
- failed to set log format: %v
- failed to set log output destination to %q, touch failed wit
- No global params
AI-assisted analysis of slimtoolkit/slim@81940d17fa (2026-08-31).
Data as JSON: /api/errors/442fcf6d610bbe78.
Report an issue: GitHub.