{"record":{"id":"2bb582fdaaeb24d8","repo":"cloudflare/cloudflared","slug":"invalid-level-filter-provided-please-use-one-of","errorCode":null,"errorMessage":"invalid --level filter provided, please use one of the following Log Levels: debug, info, warn, error","messagePattern":"invalid --level filter provided, please use one of the following Log Levels: debug, info, warn, error","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cmd/cloudflared/tail/cmd.go","lineNumber":177,"sourceCode":"\t\tlog.Error().Msgf(\"management request failed validation: (%d) %s\", e.Code, e.Message)\n\t}\n}\n\n// parseFilters will attempt to parse provided filters to send to with the EventStartStreaming\nfunc parseFilters(c *cli.Context) (*management.StreamingFilters, error) {\n\tvar level *management.LogLevel\n\tvar sample float64\n\n\tevents := make([]management.LogEventType, 0)\n\n\targLevel := c.String(\"level\")\n\targEvents := c.StringSlice(\"event\")\n\targSample := c.Float64(\"sample\")\n\n\tif argLevel != \"\" {\n\t\tl, ok := management.ParseLogLevel(argLevel)\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"invalid --level filter provided, please use one of the following Log Levels: debug, info, warn, error\")\n\t\t}\n\t\tlevel = &l\n\t}\n\n\tfor _, v := range argEvents {\n\t\tt, ok := management.ParseLogEventType(v)\n\t\tif !ok {\n\t\t\treturn nil, fmt.Errorf(\"invalid --event filter provided, please use one of the following EventTypes: cloudflared, http, tcp, udp\")\n\t\t}\n\t\tevents = append(events, t)\n\t}\n\n\tif argSample <= 0.0 || argSample > 1.0 {\n\t\treturn nil, fmt.Errorf(\"invalid --sample value provided, please make sure it is in the range (0.0 .. 1.0)\")\n\t}\n\tsample = argSample\n\n\tif level == nil && len(events) == 0 && argSample != 1.0 {","sourceCodeStart":159,"sourceCodeEnd":195,"githubUrl":"https://github.com/cloudflare/cloudflared/blob/2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f/cmd/cloudflared/tail/cmd.go#L159-L195","documentation":"Validation error in parseFilters while building streaming filters for `cloudflared tail`. It fires when the --level flag value does not match one of the recognized log levels (debug, info, warn, error) per management.ParseLogLevel, so the CLI refuses to start the stream with an invalid filter.","triggerScenarios":"Running e.g. `cloudflared tail --level verbose <tunnel-id>` — any --level string not parseable as a supported level (debug, info, warn, error, and their case variants accepted by ParseLogLevel).","commonSituations":"Typo in the level name, copy-pasting a level from another tool (e.g. 'trace', 'fatal', 'verbose'), or using a numeric level.","solutions":["Use one of the documented levels: debug, info, warn, error","Run `cloudflared tail --help` to see accepted --level values","Check case/formatting — the value must exactly match a supported level"],"exampleFix":"# before\ncloudflared tail --level fatal <tunnel-id>\n# after\ncloudflared tail --level error <tunnel-id>","handlingStrategy":"validation","validationCode":"var validLevels = map[string]bool{\"debug\": true, \"info\": true, \"warn\": true, \"error\": true}\nif !validLevels[strings.ToLower(level)] {\n\treturn fmt.Errorf(\"--level must be one of debug, info, warn, error\")\n}","typeGuard":null,"tryCatchPattern":"if _, ok := management.ParseLogLevel(level); !ok {\n\treturn usageError(\"invalid --level; expected debug|info|warn|error\")\n}","preventionTips":["Copy flag values from `cloudflared tail --help`","Remember only four levels are supported — no trace/fatal","Validate flags in scripts before invoking cloudflared"],"tags":["cli","validation","logging","flags"],"backgroundTag":"invalid-enum-value","analyzedSha":"2253eeeb25a44a713a4b60b8ba1e1b3f377d1a0f","analyzedAt":"2026-09-06T04:14:33.757Z","contentChangedAt":"2026-09-06T04:14:33.757Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}