ipfs/kubo · error

setting log level %s: %w

Error message

setting log level %s: %w

What it means

Failure in `ipfs log level`: logging.Parse rejected the --log-level string (or the GOLOG_LOG_LEVEL-style subcomponent spec, e.g. 'error,bitswap=debug'). The value is not a recognized go-log level or level/subsystem pair, so no log level was changed.

Source

Thrown at core/commands/log.go:269

Example:

  GOLOG_LOG_LEVEL="error,bitswap=debug" ipfs daemon
  ipfs log tail --log-level info

This will only return 'info' logs from bitswap and skip 'debug'.
`,
	},

	Options: []cmds.Option{
		cmds.StringOption(logLevelOption, "Log level to listen to.").WithDefault(""),
	},
	Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
		var pipeReader *logging.PipeReader
		logLevelString, _ := req.Options[logLevelOption].(string)
		if logLevelString != "" {
			logLevel, err := logging.Parse(logLevelString)
			if err != nil {
				return fmt.Errorf("setting log level %s: %w", logLevelString, err)
			}
			pipeReader = logging.NewPipeReader(logging.PipeLevel(logLevel))
		} else {
			pipeReader = logging.NewPipeReader()
		}

		go func() {
			<-req.Context.Done()
			pipeReader.Close()
		}()
		return res.Emit(pipeReader)
	},
}

View on GitHub (pinned to 329838acdf)

Solutions

  1. Use a single valid level: debug, info, warn, error, dpanic, panic, or fatal
  2. Use subsystem form like subsystem=level, e.g. bitswap=debug
  3. Check GOLOG_LOG_LEVEL docs for the accepted syntax
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at core/commands/log.go:269 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03). Data as JSON: /api/errors/1fae88647e39d799. Report an issue: GitHub.