{"record":{"id":"442fcf6d610bbe78","repo":"slimtoolkit/slim","slug":"unknown-log-level-q","errorCode":null,"errorMessage":"unknown log-level %q","messagePattern":"unknown log-level %q","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/app/sensor/logger.go","lineNumber":82,"sourceCode":"\tvar logLevel log.Level\n\n\tswitch levelName {\n\tcase \"trace\":\n\t\tlogLevel = log.TraceLevel\n\tcase \"debug\":\n\t\tlogLevel = log.DebugLevel\n\tcase \"info\":\n\t\tlogLevel = log.InfoLevel\n\tcase \"warn\":\n\t\tlogLevel = log.WarnLevel\n\tcase \"error\":\n\t\tlogLevel = log.ErrorLevel\n\tcase \"fatal\":\n\t\tlogLevel = log.FatalLevel\n\tcase \"panic\":\n\t\tlogLevel = log.PanicLevel\n\tdefault:\n\t\treturn fmt.Errorf(\"unknown log-level %q\", levelName)\n\t}\n\n\tlog.SetLevel(logLevel)\n\treturn nil\n}\n","sourceCodeStart":64,"sourceCodeEnd":88,"githubUrl":"https://github.com/slimtoolkit/slim/blob/81940d17fa112cc678e32209214bcb2355cb3004/pkg/app/sensor/logger.go#L64-L88","documentation":"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.","triggerScenarios":"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.","commonSituations":"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\").","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."],"exampleFix":"// before\nconfigureLogger(\"WARNING\")\n// after\nlevel := strings.ToLower(strings.TrimSpace(\"WARNING\")) // \"warning\" -> use \"warn\"","handlingStrategy":"validation","validationCode":"var validLevels = map[string]bool{\"trace\":true,\"debug\":true,\"info\":true,\"warn\":true,\"error\":true,\"fatal\":true,\"panic\":true}\nif !validLevels[strings.ToLower(strings.TrimSpace(level))] {\n    return fmt.Errorf(\"unsupported log-level %q\", level)\n}\n// safe to call configureLogger(level)","typeGuard":null,"tryCatchPattern":"if err := configureLogger(level); err != nil {\n    log.Fatalf(\"invalid log level %q: %v\", level, err)\n}","preventionTips":["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."],"tags":["configuration","logging","validation"],"backgroundTag":"invalid-enum-value","analyzedSha":"81940d17fa112cc678e32209214bcb2355cb3004","analyzedAt":"2026-08-31T23:06:12.682Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-08T05:18:18.240Z"}