OpenTelemetry SDKs
Pick your language
SparkLogs receives OTLP/HTTP logs natively. Every OpenTelemetry SDK with a stable logs API can ship to SparkLogs directly — no vendor adapter, no custom transport. These pages give you a 5-minute setup with batching, compression, and graceful-shutdown wired correctly out of the box, plus integration recipes for the logging library you already use:
| Language | Doc | Runnable examples (GitHub) |
|---|---|---|
| Python | Python | stdlib logging · structlog · loguru |
| Node.js | Node.js | manual OTel · Pino · Winston · Bunyan |
| Java | Java | Logback · Log4j2 |
| .NET | .NET | MEL · Serilog · NLog |
| Go | Go | slog · zap · logrus · zerolog |
| Ruby | Ruby | stdlib Logger |
| PHP | PHP | Monolog |
| Rust | Rust | tracing |
All examples live in the public sparklogs-ingest-examples repository (make mock-test runs them against a local OTLP mock receiver).
If your language isn't listed (yet), you can still ship logs to SparkLogs — see the OTLP/HTTP API page for the wire-protocol contract, or use any of our agent-based ingestion options.
Do I need a collector?
Probably not, to start. Each language page documents the OTel SDK direct → SparkLogs path, which is the simplest setup and works for most services. Add a local collector when you need queue-on-outage durability, central config, sampling / redaction, or multi-backend fan-out. The OTel SDKs in production guide has the full decision matrix.
What about metrics and traces?
Today SparkLogs receives logs only via OTLP — traces, metrics, and profiles are on the roadmap. The same OTel SDK setup will export those signals to SparkLogs once they're generally available, with no application changes; only the per-signal exporter endpoint will need to be configured.
Where to next
- Pick your language in the table above for a 5-minute walkthrough.
- Production deployments: see OTel SDKs in production for batching, backpressure, compression, and graceful shutdown.
- OTLP/HTTP transport details: see the OTLP/HTTP API page.
- Tested compatibility: any OTLP-compliant client works (Grafana Alloy, Vector, the OTel Collector itself); see tested compatibility for the full list.