Ingest that never blocks
One HTTP endpoint. Logs are queued durably before they're written, so a slow database never slows your app. Under pressure you get a clean 503 with Retry-After, never silent drops.
202 Accepted · gzip bodies OKShip structured JSON logs over plain HTTP. Search inside every payload, tail them live, and get an email the moment something catches fire.

Log Dog does logs, and only logs: ingest, search, live tail and alerts.
One HTTP endpoint. Logs are queued durably before they're written, so a slow database never slows your app. Under pressure you get a clean 503 with Retry-After, never silent drops.
202 Accepted · gzip bodies OKEvery entry keeps its free-form attrs payload, and every key is queryable. Filter nested paths, compare numbers, negate anything, and share the URL.
customer.country:CA latency_ms:>400Watch logs land in your browser milliseconds after they're sent, streamed straight off the queue. Filter by app, level or text. Pause to read, jump to search at any line.
WebSocket · /v1/tail"20 or more errors in checkout within 5 minutes." Fires once, re-notifies while it stays broken, and tells you when it's resolved. No inbox floods.
ok → firing → resolvedNo SDK, no agent, no config file.
Name it in the dashboard and copy your API key. It's shown exactly once.
Level, message, and any JSON you like in attrs.
$ curl -X POST https://logs.example.com/v1/logs \ -H "Authorization: Bearer $LOGDOG_KEY" \ -H "Content-Type: application/json" \ -d '{ "level": "error", "message": "payment failed", "attrs": { "order_id": 8812, "err": "card_declined" } }'
Open Live tail and it's already there.
Type key:value pairs and words. Log Dog turns them into a fast, parameterized query, and points at the exact spot when something doesn't parse.
| level:error | Exact level; level:>=warn for warn and up |
| err:card_declined | Match a key in attrs |
| customer.id:c_19 | Nested paths with dots |
| latency_ms:>400 | Numeric compare: > >= < <= |
| trace_id:* | Key exists |
| "free text" | Words in the message |
| -env:staging | Exclude anything with a leading dash |
Log Dog is one Go binary plus three well-known services. Run everything in a single process for a side project, or split ingest, writer, API and alerter into their own containers when traffic grows.
# clone both repos side by side $ git clone https://github.com/vibr8soft/logdog_backend.git $ git clone https://github.com/vibr8soft/logdog_frontend.git $ cd logdog_backend # write deploy/.env with generated passwords $ deploy/bin/init-env.sh # fill in the public URL, the SMTP account and LOGDOG_TAG (the git sha below) in deploy/.env, then build $ make image VERSION=$(git rev-parse --short HEAD) $ docker compose -f deploy/docker-compose.prod.yml build web # creates the owner, dogfooding and the demo app, starts everything $ BOOTSTRAP_OWNER_EMAIL=you@example.com deploy/bin/bootstrap.sh
Run it on your own hardware with docker compose. Every feature on this page.
Read the self-host guideWe run the stack. You get an ingest URL and a dashboard. [PLAN LIMITS]
Start logging
One endpoint today. Search, tail and alerts the moment data lands.