扩展

扩展 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-SourceIdentity headers

构建你自己的模块

当内置适配器或框架集成无法满足你的需求时,这个工具包允许你以相同的形态和易用性构建自己的方案。

你想要……使用
将事件发送到没有内置适配器的后端(HTTP 或任何其他传输方式)Custom drains
为生产环境将任意 drain 封装为 batch + retry + fanoutDrain pipeline
支持列表中没有的框架,或非 HTTP 运行时Custom framework integration

哪些在何处可用

只有 stream(进程内总线 + SSE 桥接)是仅限本地的——它只存在于一个 Node / Bun / Deno 进程内,不能在无服务器平台(Vercel Functions、Cloudflare Workers、AWS Lambda)上工作。stream 页面会详细解释这一限制。

其他所有内容——FS readerpluginscustom enricherstail samplingidentity headerscustom drainsdrain pipelinecustom framework integration——都能在 evlog 运行的任何地方运行。