扩展
扩展 evlog
观察流经管道的内容(stream、fs reader、consumer recipes),接入管道(plugins、enrichers、tail sampling、identity headers),或构建你自己的模块(custom drains、drain pipeline、自定义框架集成)。
evlog 设计为可在两端扩展——你可以观察流经其中的内容(而不改变管道),接入管道(丰富信息、决定保留什么、响应生命周期事件),或者构建你自己的模块(用于不受支持目标的自定义 drains、你自己的框架集成)。本节中的每个页面都提供了一个 ::prompt 块,你可以将其直接放入 Cursor / Windsurf 中,为你自己的应用搭建集成脚手架。
心智模型
your app code
│
│ emit
▼
┌──────────────────────────────────────────────────────────────────┐
│ evlog pipeline │
│ │
│ request lifecycle → enrich → tail sample → drain │
│ │
└──────────────────────────────────────────────────────────────────┘
│ │
│ observe (no mutation) │ ship
▼ ▼
┌─────────────────────────────────────────┐ ┌─────────────────────┐
│ stream (in-process + SSE bridge) │ │ custom drains │
│ fs reader (NDJSON history) │ │ drain pipeline │
│ consumer recipes (devtools, dashboards)│ │ (batch + fanout) │
└─────────────────────────────────────────┘ └─────────────────────┘
三种扩展方式
观察管道(不改变内容)
订阅事件,而不改变实际发出的内容。stream 是实时数据流,fs reader 是历史日志,而 consumer recipes 会展示如何将二者接入 devtool、dashboard、CLI tail,或 curl + jq。
| 你想要…… | 使用 |
|---|---|
| 订阅实时事件(进程内或通过 SSE 面向浏览器 / CLI) | Stream |
| 从磁盘回放或跟踪历史事件 | FS reader |
构建一个小型 consumer 面板、devtool,或通过 curl + jq 进行管道传输 | Consumer recipes |
接入管道
在管道的一个或多个生命周期阶段中挂钩。下面四个页面覆盖了完整的扩展面——当你只关心单一事项时选择其中一个;当你有多个需求时选择 definePlugin。
| 你想要…… | 使用 |
|---|---|
| 从一个统一的对象响应生命周期事件(多个 hooks 共享状态) | Plugins |
| 为每个事件自动添加一个派生字段 | Custom enrichers |
| 事后决定是否保留某个事件(status、duration、自定义逻辑) | Tail sampling |
在接收端标识你的 evlog 流量(覆盖 User-Agent / X-Evlog-Source) | Identity headers |
构建你自己的模块
当内置适配器或框架集成无法满足你的需求时,这个工具包允许你以相同的形态和易用性构建自己的方案。
| 你想要…… | 使用 |
|---|---|
| 将事件发送到没有内置适配器的后端(HTTP 或任何其他传输方式) | Custom drains |
| 为生产环境将任意 drain 封装为 batch + retry + fanout | Drain pipeline |
| 支持列表中没有的框架,或非 HTTP 运行时 | Custom framework integration |
哪些在何处可用
只有 stream(进程内总线 + SSE 桥接)是仅限本地的——它只存在于一个 Node / Bun / Deno 进程内,不能在无服务器平台(Vercel Functions、Cloudflare Workers、AWS Lambda)上工作。stream 页面会详细解释这一限制。
其他所有内容——FS reader、plugins、custom enrichers、tail sampling、identity headers、custom drains、drain pipeline、custom framework integration——都能在 evlog 运行的任何地方运行。