适配器

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. 获取源令牌

  1. 创建一个 Better Stack 账户
  2. 转到 Telemetry > Sources 并创建一个新源
  3. 复制 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())
})

就是这样!你的日志现在会显示在 Better Stack 中。

配置

适配器会按照优先级从多个来源读取配置(优先级从高到低):

  1. 传递给 createBetterStackDrain()覆盖项
  2. 运行时配置,位于 runtimeConfig.betterStack(仅限 Nuxt/Nitro)
  3. 环境变量BETTER_STACK_*NUXT_BETTER_STACK_*

环境变量

变量Nuxt 别名描述
BETTER_STACK_SOURCE_TOKENNUXT_BETTER_STACK_SOURCE_TOKENBetter Stack 源令牌(必需)
BETTER_STACK_ENDPOINTNUXT_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,
})

完整配置参考

选项类型默认值描述
sourceTokenstring-Better Stack 源令牌(必需)
endpointstringhttps://in.logs.betterstack.com摄取端点
timeoutnumber5000请求超时时间(毫秒)

日志转换

evlog 广泛事件通过 toBetterStackEvent() 进行转换:

  • 时间戳timestamp 映射为 dt(Better Stack 期望的 ISO-8601 时间戳字段)
  • 所有其他字段:原样展开到事件正文中

Better Stack 接受任意 JSON 字段,因此你所有的广泛事件上下文(level、service、action、用户数据等)都会自动可搜索。

在 Better Stack 中查询日志

Better Stack 提供强大的日志搜索界面:

  • 实时追踪:实时流式传输日志
  • 全文搜索:跨所有字段进行搜索
  • 结构化查询:按 level:errorservice: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!,
})

下一步