> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developers.deepgram.com/docs/log-formats/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.deepgram.com/_mcp/server. # Log Formats Deepgram self-hosted containers support four log output formats. Use the `--log-format` CLI flag to select the format that best fits your logging infrastructure. This flag applies to all self-hosted container images: API, Engine, License Proxy, and Billing. ## Available Formats | Format | Flag | Description | | ------- | ---------------------- | ---------------------------------------------------------------------------------------------------------- | | Full | `--log-format=full` | Default. Verbose output with all fields, timestamps, and span context. Best for development and debugging. | | Compact | `--log-format=compact` | Abbreviated output. Omits redundant span context for more concise logs. | | Pretty | `--log-format=pretty` | Human-readable output with color highlighting. Best for local development. | | Json | `--log-format=json` | Structured JSON output. Best for log aggregation systems (i.e. Datadog, Splunk, ELK). | ## Configuration The log format is set as a CLI flag in the container's `command`. It is not configured via TOML. `--log-format` is a top-level option, so it must appear before the `serve` subcommand — appending it after `serve` causes the container to exit with `error: unexpected argument '--log-format' found`. ### Docker Compose ```yaml services: api: image: quay.io/deepgram/self-hosted-api:release-260319 command: -v --log-format=json serve /api.toml # ... engine: image: quay.io/deepgram/self-hosted-engine:release-260319 command: -v --log-format=json serve /engine.toml # ... license-proxy: image: quay.io/deepgram/self-hosted-license-proxy:release-260319 command: -v --log-format=json serve /license-proxy.toml # ... ``` ### Kubernetes (Helm) In a Helm values override, set `logFormat` for each component: ```yaml api: logFormat: json engine: logFormat: json licenseProxy: logFormat: json billing: logFormat: json ``` `logFormat` accepts `full`, `compact`, `pretty`, or `json`. Leave it unset to use the container's default (`full`). The chart validates the value and renders the flag in the correct position in each container's arguments; an unrecognized value fails at template time rather than crash-looping the pod. Requires chart version `0.45.0` or later — earlier versions ignore `logFormat` silently, with no error and no change to log output. > **Note** > > The API container also accepts a legacy `--json` flag and `JSON` environment variable that force JSON output. Do not combine either with `--log-format` set to a format other than `json` — the container exits with an error at startup. The Helm chart rejects this combination at template time. ## Example Output ### Full (default) ``` 2026-03-19T14:30:00.123456Z INFO serve: deepgram::server: Starting API server host=0.0.0.0 port=8080 2026-03-19T14:30:00.234567Z INFO serve: deepgram::license: License validated successfully expires=2027-09-19T00:00:00Z 2026-03-19T14:30:01.345678Z INFO serve: deepgram::engine: Engine connection established endpoint=engine:9991 ``` ### Compact ``` 2026-03-19T14:30:00.123456Z INFO serve: Starting API server host=0.0.0.0 port=8080 2026-03-19T14:30:00.234567Z INFO serve: License validated expires=2027-09-19T00:00:00Z 2026-03-19T14:30:01.345678Z INFO serve: Engine connected endpoint=engine:9991 ``` ### Pretty ``` 2026-03-19T14:30:00.123456Z INFO serve: Starting API server host: 0.0.0.0 port: 8080 2026-03-19T14:30:00.234567Z INFO serve: License validated successfully expires: 2027-09-19T00:00:00Z ``` ### Json ```json {"timestamp":"2026-03-19T14:30:00.123456Z","level":"INFO","target":"deepgram::server","message":"Starting API server","host":"0.0.0.0","port":8080} {"timestamp":"2026-03-19T14:30:00.234567Z","level":"INFO","target":"deepgram::license","message":"License validated successfully","expires":"2027-09-19T00:00:00Z"} {"timestamp":"2026-03-19T14:30:01.345678Z","level":"INFO","target":"deepgram::engine","message":"Engine connection established","endpoint":"engine:9991"} ``` ## Availability The `--log-format` flag is available in release `260319` and later on all self-hosted container images. --- ## What's Next * [Metrics Guide](/docs/metrics-guide) - Monitor your deployment with Prometheus metrics * [Status Endpoint](/docs/self-hosted-status-endpoint) - Check node health and readiness > Configure structured log output for self-hosted containers.