hello@logkit.io · Status · GitHub
The Architecture

Structured logs.
Clear thinking.

LogKit is a three-layer system designed to eliminate noise from your stack. We handle the heavy lifting of parsing and enrichment, so you can focus on shipping code.

The Emitter Layer

Type-safe SDKs for Go, Node, Python, and Rust

The SDK is a lightweight, zero-allocation library that sits directly in your codebase. It enforces a strict schema at compile time, ensuring that every log event contains the context you need without manual boilerplate.

  • Zero runtime overhead: Async flushing keeps your hot path under 1ms.
  • Automatic Context: Trace IDs and user contexts are injected automatically.
  • MIT Licensed: Use it locally, self-host it, or send it to LogKit.
main.go
// Initialise once at startup
kit := logkit.New(
  logkit.WithService("payment-gateway"),
  logkit.WithEnv("production"),
)

// Emit with full context
kit.Info("payment.processed",
  "amount", 50.00,
  "currency", "USD",
  "status", "success",
  "trace_id", logkit.TraceID(),
)
LogKit ingest pipeline diagram
The Ingest Pipeline

Parsing, Enrichment, and Routing

Logs arrive as raw JSON. Our pipeline normalizes them, enriches them with metadata, and routes them to the appropriate storage or alerting system in real-time.

Parsing

Standardizes logs from legacy frameworks into a canonical schema.

Enrichment

Adds geo-location, service versioning, and error stack traces automatically.

Routing

Routes high-severity logs to PagerDuty and aggregates others into the dashboard.

The Visualizer

Query and Tail with Clarity

Inspect billions of events instantly. Filter by any field, use Boolean logic, and stream live logs to your terminal.

Real-time Tail & Query Interface

The LogKit console provides a unified view of your entire infrastructure. Use our intuitive query language to find specific errors, correlate them with trace IDs, and export data to your data warehouse.

  • Live Tail: Watch logs stream in real-time as they are generated.
  • Structured Filtering: Click any field in a log to filter the entire dataset.
  • Alert Rules: Configure alerts based on specific field values.
LogKit console interface showing query results
Schema Registry

Enforce Shape at Emit Time

Eliminate "it works on my machine" errors caused by schema drift. LogKit validates your log structures before they leave your application.

In traditional logging, a missing field like error_code might result in a string like "null" or be omitted entirely, breaking downstream aggregation scripts. LogKit's Schema Registry forces you to define the expected shape.

When you emit a log, the SDK checks against your registry. If a required field is missing or the type is wrong, the application fails fast at compile time or runtime with a clear, actionable error message. This guarantees that your dashboards and alerts are always accurate.

Context Threading

Trace Context Propagation

Automatically propagate trace IDs, request IDs, and user context across every layer of your stack.

Automatic Trace Propagation

Context threading is built into the SDK. Every log event automatically captures the current Trace ID and Request ID, regardless of which function generated the log.

Whether you are using Go's context package, thread-local storage in Python, or async workers in Node.js, LogKit ensures that the full call tree is visible in your observability platform.

trace_id: "a1b2-c3d4-e5f6"
middleware.go
// Middleware injects context
ctx := logkit.WithContext(req.Context(), r)

// Pass context to handler
h(ctx)

// Handler logs automatically
log.Info("request.finished",
  "trace_id", logkit.TraceID(),
)
Comparison

LogKit vs. The Alternatives

Why structured logging with LogKit beats raw stdout or legacy frameworks.

Feature LogKit Stdout Legacy Frameworks
Structured Schema Native Type-safe JSON Manual string formatting Often loose or inconsistent
Searchability Full-text & field filtering Requires grep or log aggregation Difficult without external tools
Trace Context Automatic propagation Manual header injection Rarely supported
Performance <1ms overhead Fast, but IO bound Cost Pay-per-event, predictable Free storage, but costly scaling High operational cost
Real-time Alerts Native rule engine Requires external tools Requires external tools
Retention Long-term (up to 2 years) Short-term (logs vanish) Short-term
Ecosystem Native SDKs for 8 languages Universal, but no structure Language-specific, often outdated
Get started today

Replace noise with signal.

Download the open-source SDK or schedule a demo to see the platform in action.