扩展

扩展 evlog

观察流经管道的内容、接入管道,或构建你自己的模块。这里展示了 evlog 暴露的所有扩展点。

evlog 的设计支持从两端进行扩展。你可以观察流经管道的内容(不改变管道),接入管道(增强、决定保留哪些内容、响应生命周期事件),或构建你自己的模块(用于不受支持目标的自定义排出器、自定义框架集成)。本节中的每个页面都附带一个 ::prompt 块,你可以将其放入 Cursor / Claude,以便在自己的应用中搭建集成。

心智模型

     应用代码
        │
        │  发出
        ▼
┌──────────────────────────────────────────────────────────────────┐
│   evlog 管道                                                     │
│                                                                  │
│   请求生命周期  →  增强  →  尾部采样  →  排出                    │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘
     │                                                  │
     │  观察(不修改)                                  │  发送
     ▼                                                  ▼
┌─────────────────────────────────────────┐    ┌─────────────────────┐
│   流(进程内 + SSE 桥接)                │    │   自定义排出器       │
│   fs 读取器(NDJSON 历史记录)           │    │   排出管道           │
│   诊断通道(evlog.event)                │    │   (批处理 + 扇出)  │
│   消费者方案(开发者工具、仪表板)       │    │                     │
└─────────────────────────────────────────┘    └─────────────────────┘

三种扩展方式

观察管道(不改变内容)

订阅事件,而不改变发出的内容。流是实时数据源,fs reader 是历史日志,诊断通道允许消费者仅通过通道名称进行订阅,而消费者示例则展示如何将其中任意一种连接到开发工具、仪表板、CLI tail,或 curl + jq

你想要……使用
订阅实时事件(进程内,或通过 SSE 供浏览器 / CLI 使用)
从磁盘重放或持续读取历史事件FS reader
构建一个小型消费者面板、开发工具,或连接到 curl + jq 的管道消费者示例
让消费者无需导入 evlog 即可订阅,或访问 Cloudflare Tail Worker诊断通道

接入管道

在一个或多个生命周期阶段接入管道。下面四个页面涵盖了完整的扩展面。只有一个关注点时选择其中一个;有多个关注点时选择 definePlugin

你想要……使用
从一个统一的对象响应生命周期事件(多个 hooks 共享状态)插件
为每个事件自动添加一个派生字段自定义增强器
事后决定是否保留某个事件(status、duration、自定义逻辑)尾部采样
在接收端标识你的 evlog 流量(覆盖 User-Agent / X-Evlog-Source身份标头

构建你自己的模块

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

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

哪些内容在哪里可用

只有 (进程内总线 + SSE 桥接)是仅限本地的:它存在于单个 Node / Bun / Deno 进程中,无法在无服务器平台(Vercel Functions、Cloudflare Workers、AWS Lambda)上运行。流页面详细解释了这一限制。

其他所有内容,从 FS reader插件自定义增强器尾部采样身份标头自定义 drainsDrain 管道自定义框架集成,都可以在 evlog 运行的任何地方运行。