适配器
Better Stack Adapter
将广泛事件发送到 Better Stack( formerly Logtail)进行日志管理、告警和仪表板。通过环境变量实现零配置设置。
Better Stack 是一个以 DX 为首的日志管理平台,具备强大的搜索、告警和仪表板功能。evlog Better Stack 适配器会将你的广泛事件发送到 Better Stack 的 HTTP 摄取 API。
Prompt
添加 Better Stack 排水适配器,将 evlog 的广泛事件发送到 Better Stack。
1. 确认你正在使用的框架,并按照其 evlog 集成模式操作
2. 如果尚未安装 evlog,请先安装它
3. 从 'evlog/better-stack' 导入 createBetterStackDrain
4. 将 createBetterStackDrain() 集成到框架的排水配置中
5. 设置 BETTER_STACK_SOURCE_TOKEN 环境变量
6. 通过触发请求并检查 Better Stack 日志仪表板来测试
适配器文档:https://www.evlog.dev/adapters/better-stack
框架配置:https://www.evlog.dev/frameworks
安装
Better Stack 适配器随 evlog 一起捆绑提供:
src/index.ts
import { createBetterStackDrain } from 'evlog/better-stack'
快速开始
1. 获取源令牌
- 创建一个 Better Stack 账户
- 转到 Telemetry > Sources 并创建一个新源
- 复制 Source Token
2. 设置环境变量
.env
BETTER_STACK_SOURCE_TOKEN=your-source-token-here
3. 将排水器连接到框架
// server/plugins/evlog-drain.ts
import { createBetterStackDrain } from 'evlog/better-stack'
export default defineNitroPlugin((nitroApp) => {
nitroApp.hooks.hook('evlog:drain', createBetterStackDrain())
})
import { createBetterStackDrain } from 'evlog/better-stack'
app.use(evlog({ drain: createBetterStackDrain() }))
import { createBetterStackDrain } from 'evlog/better-stack'
app.use(evlog({ drain: createBetterStackDrain() }))
import { createBetterStackDrain } from 'evlog/better-stack'
await app.register(evlog, { drain: createBetterStackDrain() })
import { createBetterStackDrain } from 'evlog/better-stack'
app.use(evlog({ drain: createBetterStackDrain() }))
import { createBetterStackDrain } from 'evlog/better-stack'
EvlogModule.forRoot({ drain: createBetterStackDrain() })
import { createBetterStackDrain } from 'evlog/better-stack'
initLogger({ drain: createBetterStackDrain() })
就是这样!你的日志现在会显示在 Better Stack 中。
配置
适配器会按照优先级从多个来源读取配置(优先级从高到低):
- 传递给
createBetterStackDrain()的 覆盖项 - 运行时配置,位于
runtimeConfig.betterStack(仅限 Nuxt/Nitro) - 环境变量(
BETTER_STACK_*或NUXT_BETTER_STACK_*)
环境变量
| 变量 | Nuxt 别名 | 描述 |
|---|---|---|
BETTER_STACK_SOURCE_TOKEN | NUXT_BETTER_STACK_SOURCE_TOKEN | Better Stack 源令牌(必需) |
BETTER_STACK_ENDPOINT | NUXT_BETTER_STACK_ENDPOINT | 自定义摄取端点 |
运行时配置(仅限 Nuxt)
在 nuxt.config.ts 中进行类型安全的配置:
nuxt.config.ts
export default defineNuxtConfig({
runtimeConfig: {
betterStack: {
sourceToken: '', // 通过 NUXT_BETTER_STACK_SOURCE_TOKEN 设置
},
},
})
覆盖选项
直接传递选项以覆盖任何配置:
server/plugins/evlog-drain.ts
const drain = createBetterStackDrain({
sourceToken: 'my-token',
timeout: 10000,
})
完整配置参考
| 选项 | 类型 | 默认值 | 描述 |
|---|---|---|---|
sourceToken | string | - | Better Stack 源令牌(必需) |
endpoint | string | https://in.logs.betterstack.com | 摄取端点 |
timeout | number | 5000 | 请求超时时间(毫秒) |
日志转换
evlog 广泛事件通过 toBetterStackEvent() 进行转换:
- 时间戳:
timestamp映射为dt(Better Stack 期望的 ISO-8601 时间戳字段) - 所有其他字段:原样展开到事件正文中
Better Stack 接受任意 JSON 字段,因此你所有的广泛事件上下文(level、service、action、用户数据等)都会自动可搜索。
在 Better Stack 中查询日志
Better Stack 提供强大的日志搜索界面:
- 实时追踪:实时流式传输日志
- 全文搜索:跨所有字段进行搜索
- 结构化查询:按
level:error、service:my-app或任何广泛事件字段过滤 - 仪表板:从你的广泛事件数据创建自定义仪表板
- 告警:基于日志模式或阈值设置告警
故障排除
缺少源令牌错误
控制台
[evlog/better-stack] 缺少源令牌。请设置 BETTER_STACK_SOURCE_TOKEN 环境变量或在 createBetterStackDrain() 中传入
请确保已设置环境变量并在添加后重启服务器。
401 未授权
你的源令牌可能无效或被吊销。请在 Better Stack 仪表板的 Telemetry > Sources 中生成新的源令牌。
403 禁止访问
源可能被归档或删除。请在 Better Stack 中创建一个新源。
直接 API 使用
对于高级用例,你可以使用更低层的函数:
server/utils/better-stack.ts
import { sendToBetterStack, sendBatchToBetterStack } from 'evlog/better-stack'
// 发送单个事件
await sendToBetterStack(event, {
sourceToken: process.env.BETTER_STACK_SOURCE_TOKEN!,
})
// 批量发送多个事件
await sendBatchToBetterStack(events, {
sourceToken: process.env.BETTER_STACK_SOURCE_TOKEN!,
})