Skip to content

Trailscope documentation

Trailscope is open-source, self-hosted API request logging. Your services send every request they handle (method, route, status, timing, headers, bodies if you allow it, the error and its stack) to your own Trailscope server, where you can watch them live, filter them with a SQL WHERE expression, open any one of them, and follow one customer’s journey across services and background jobs.

  1. Run it. One docker compose up -d starts Trailscope with ClickHouse and Postgres; the setup wizard creates your account, your first project and its ingest key. Self-hosting covers sizing, TLS, upgrades and backups, and configuration lists every setting.
  2. Send requests. Add the SDK for your framework, or point an OpenTelemetry exporter at Trailscope (see “Send data” below).
  3. Use it. Watch the live tail, filter in Explore with the query language, and set up alerts and email on 5xx.

Before you put real traffic through it, read security: it explains what is collected, how redaction works and what to configure.

Your stack Page
Express Express
Fastify Fastify
NestJS (with the Logger bridge and BullMQ) NestJS
Any other Node.js code Node.js core
Django, FastAPI, Starlette, Celery, Python logging Python
Spring Boot, Jakarta Servlet apps, Logback Java
Laravel (queues, log channel, Octane), plain PHP, Monolog PHP and Laravel
Anything with OpenTelemetry, or raw HTTP Ingest protocol and OTLP

All SDKs behave the same way (batching, redaction, sampling, user and journey keys); SDK behaviour describes it.