Build on top of evlog
evlog is designed to be extended on both ends — you can observe what flows through (without altering the pipeline), or plug into the pipeline itself (sources, enrichers, drains).
This section bundles every extension surface in one place. Each page is short, focused, and copy-paste oriented.
I want to…
| Question | Answer |
|---|---|
| Subscribe in-process from a script or test | In-process stream |
| See events live while I dev (browser tab, CLI) | Stream server |
| Replay or tail historic logs | FS reader |
| Build a small consumer panel / devtool | Consumer recipes |
| React to specific events (alert, side-effect, tracing) | Plugins |
| Tint events with my own context (tenant id, deploy id…) | Custom enrichers |
| Decide whether to keep an event based on the request outcome | Tail sampling |
| Add a service that receives my logs (Axiom, an internal API…) | Custom drains |
| Combine several drains with retry, batching, fanout | Drain pipeline |
| Send events to several backends in parallel | Fanout & multi-drain |
| Identify my evlog traffic on the receiver side | Identity headers |
| Support a framework that's not in the list | Custom framework |
A note on serverless
The in-process stream and the stream server work everywhere a Node-like long-lived process runs — local dev, self-hosted servers, containers (Fly, Railway, Coolify), VMs.
They do not work on serverless platforms (Vercel Functions, Cloudflare Workers, AWS Lambda) because each invocation is an isolated process. Use a real broker (Redis Streams, NATS, Pub/Sub) for cross-instance fan-out in those environments.
The FS reader, identity headers, and the rest of the pipeline / drain extension surfaces work everywhere.
Custom Integration
Build your own evlog framework integration using the toolkit API — defineFrameworkIntegration, createMiddlewareLogger, AsyncLocalStorage, and the full drain/enrich/keep pipeline.
In-process stream
Subscribe to wide events flowing through evlog, in-process, with createStreamDrain — sync listeners, async iterators, and a ring buffer.