NuxtHub

保留与清理

概览
配置日志在 NuxtHub 中的保留时长,以及如何通过计划任务、定时作业和保留策略自动清理。

@evlog/nuxthub 会根据您的保留策略自动删除旧事件,无需手动清理。

配置

nuxt.config.ts 中设置保留周期:

nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@nuxthub/core', '@evlog/nuxthub'],

  evlog: {
    retention: '7d', // 默认值
  },
})

保留格式

保留值由数字和单位组成:

单位描述示例
d7d = 7 天
h小时24h = 24 小时
m分钟60m = 60 分钟

清理如何工作

该模块注册了一个 Nitro 计划任务(evlog:cleanup),该任务根据保留值生成的 cron schedule 运行。cron 频率设置为保留周期的一半左右:

保留周期Cron 计划描述
60m*/30 * * * *每 30 分钟
24h0 */12 * * *每 12 小时
7d0 3 * * *每天凌晨 3 点
30d0 3 * * *每天凌晨 3 点

清理任务会删除 evlog_events 表中所有 created_at 早于保留周期的行。

手动清理

您可以通过 API 端点手动触发清理:

终端
curl https://your-app.com/api/_cron/evlog-cleanup

Cron 密钥保护

如果设置了 CRON_SECRET 环境变量,则端点需要 Bearer 令牌:

终端
curl -H "Authorization: Bearer your-secret" \
  https://your-app.com/api/_cron/evlog-cleanup

建议在生产部署中使用此功能以防止未经授权的清理触发。

Vercel Cron

当使用 nuxi module add 安装模块时,系统会提示您创建一个包含适当 cron 计划的 vercel.json

vercel.json
{
  "crons": [
    {
      "path": "/api/_cron/evlog-cleanup",
      "schedule": "0 3 * * *"
    }
  ]
}

在 Vercel 上,CRON_SECRET 环境变量会自动设置并验证。

Cloudflare 及其他平台

在 Cloudflare Workers 及其他平台上,Nitro 计划任务会自动处理清理,无需额外的 cron 配置。该任务在启用 experimental.tasks 的 Nitro 配置中注册。

下一步

  • 概览 - 安装与设置
  • 适配器 - 将日志发送到 NuxtHub 存储以外的外部服务
  • 管道 - 批量处理事件以提升数据库性能