invoke-ai/InvokeAI · error · ValueError

please provide destination for http logging using format 'ht

Error message

please provide destination for http logging using format 'http=url'

What it means

_parse_http_args builds a logging.handlers.HTTPHandler from an 'http=url' logging argument. When args is missing or empty there is no destination URL to parse, so the library raises this ValueError describing the required 'http=url' format. It protects against enabling HTTP logging without a target.

Source

Thrown at invokeai/backend/util/logging.py:418

                    syslog_args["facility"] = _FACILITY_MAP[arg_value[0]]
                elif arg_name == "socktype":
                    syslog_args["socktype"] = _SOCK_MAP[arg_value[0]]
                else:
                    syslog_args["address"] = arg_name
        except Exception:
            raise ValueError(f"{args} is not a value argument list for syslog logging")
        return logging.handlers.SysLogHandler(**syslog_args)

    @staticmethod
    def _parse_file_args(args: Optional[str] = None) -> logging.Handler:  # noqa D102
        if not args:
            raise ValueError("please provide filename for file logging using format 'file=/path/to/logfile.txt'")
        return logging.FileHandler(args)

    @staticmethod
    def _parse_http_args(args: Optional[str] = None) -> logging.Handler:  # noqa D102
        if not args:
            raise ValueError("please provide destination for http logging using format 'http=url'")
        arg_list = args.split(",")
        url = urllib.parse.urlparse(arg_list.pop(0))
        if url.scheme != "http":
            raise ValueError(f"the http logging module can only log to HTTP URLs, but {url.scheme} was specified")
        host = url.hostname
        path = url.path
        port = url.port or 80

        syslog_args: Dict[str, Any] = {}
        for a in arg_list:
            arg_name, *arg_value = a.split(":", 2)
            if arg_name == "method":
                method = arg_value[0] if len(arg_value) > 0 else "GET"
                syslog_args[arg_name] = method
            else:  # TODO: Provide support for SSL context and credentials
                pass
        return logging.handlers.HTTPHandler(f"{host}:{port}", path, **syslog_args)

View on GitHub (pinned to 0b6a024f2f)

Solutions

  1. Provide a full URL: logging='http=http://logserver:8080/path'.
  2. Ensure the value after 'http=' is non-empty and not consumed by shell quoting/variable expansion.
  3. Additional per-request args can follow the URL after commas (e.g. 'http=http://host/path,key=value').

Example fix

// before
--logging http
// after
--logging http=http://localhost:9000/logs
Defensive patterns

Strategy: validation

Validate before calling

if log_format.startswith("http"):
    dest = log_format.split("=", 1)[1] if "=" in log_format else ""
    if not dest:
        raise SystemExit("--logging http requires a destination: http=http://host:port/path")

Try / catch

try:
    get_loggers(app, level, format="http=http://loghost:8080/")
except ValueError as e:
    if "destination for http logging" in str(e):
        log.error("http logging needs 'http=<url>'")
        raise

Prevention

When it happens

Trigger: Configuring logging as 'http' or 'http=' (empty value) in InvokeAI's logging options consumed by get_loggers.

Common situations: Specifying http logging in invokeai.yaml without a URL, truncating the value during shell quoting, typos that split the '=' from the URL.

Understand the failure class

Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.

Related errors


AI-assisted analysis of invoke-ai/InvokeAI@0b6a024f2f (2026-08-29). Data as JSON: /api/errors/5aed512bad07da66. Report an issue: GitHub.