googleapis/mcp-toolbox · error
unable to initialize http log: %w
Error message
unable to initialize http log: %w
What it means
NewServer converts cfg.LogLevel (a severity enum) into a logging level via log.SeverityToLevel before wiring the HTTP request logger. If the configured log level string is not a recognized severity, the HTTP logger cannot be built and server startup aborts.
Source
Thrown at internal/server/server.go:455
return nil, err
}
ctx, span := instrumentation.Tracer.Start(ctx, "toolbox/server/init")
defer span.End()
l, err := util.LoggerFromContext(ctx)
if err != nil {
return nil, err
}
// set up http serving
r := chi.NewRouter()
r.Use(middleware.Recoverer)
// logging
logLevel, err := log.SeverityToLevel(cfg.LogLevel.String())
if err != nil {
return nil, fmt.Errorf("unable to initialize http log: %w", err)
}
schema := *httplog.SchemaGCP
schema.Level = cfg.LogLevel.String()
schema.Concise(true)
httpOpts := &httplog.Options{
Level: logLevel,
Schema: &schema,
}
logger := l.SlogLogger()
r.Use(httplog.RequestLogger(logger, httpOpts))
sourcesMap, authServicesMap, embeddingModelsMap, toolsMap, promptsMap, groupsMap, err := InitializeConfigs(ctx, cfg)
if err != nil {
return nil, fmt.Errorf("unable to initialize configs: %w", err)
}
addr := net.JoinHostPort(cfg.Address, strconv.Itoa(cfg.Port))View on GitHub (pinned to 8cc6e09de2)
Solutions
- Use a supported level: one of DEBUG/INFO/WARN/ERROR (case handled by SeverityToLevel) for --log-level.
- Check the value of the log-level flag or environment variable for typos/whitespace.
- In code, assign cfg.LogLevel from log.ParseSeverity-style helpers instead of raw strings.
Example fix
// before toolbox --log-level verbose serve ... // after toolbox --log-level info serve ...
Defensive patterns
Strategy: validation
Validate before calling
if _, err := log.SeverityToLevel(cfg.LogLevel.String()); err != nil {
return fmt.Errorf("invalid --log-level %q: use DEBUG|INFO|WARN|ERROR", cfg.LogLevel.String())
} Try / catch
if srv, err := server.NewServer(ctx, cfg); err != nil {
if strings.Contains(err.Error(), "unable to initialize http log") {
cfg.LogLevel = log.ParseSeverity("info") // safe default
srv, err = server.NewServer(ctx, cfg)
}
} Prevention
- Pin allowed log-level values in deployment manifests (enum validation).
- Default to `info` when the flag is unset.
- Shell-complete or whitelist the --log-level flag in launcher scripts.
When it happens
Trigger: Starting the server with an unrecognized --log-level / LogLevel value (e.g. a typo or a level name the severity parser does not accept) when calling NewServer via the run/runServe commands.
Common situations: Setting LOG_LEVEL env or CLI flag to values like "verbose" or "warn2", or programmatic ServerConfig construction with an invalid LogLevel string.
Related errors
- unable to initialize logger: %w
- invalid log level
- failed to initialize resources: %w
- tool %q not found
- unable to retrieve source for tool %s
AI-assisted analysis of googleapis/mcp-toolbox@8cc6e09de2 (2026-09-05).
Data as JSON: /api/errors/6724d3dfaa3901bc.
Report an issue: GitHub.