NuxtHub
保留与清理
配置日志在 NuxtHub 中的保留时长,以及如何通过计划任务、定时作业和保留策略自动清理。
@evlog/nuxthub 会根据您的保留策略自动删除旧事件,无需手动清理。
配置
在 nuxt.config.ts 中设置保留周期:
nuxt.config.ts
export default defineNuxtConfig({
modules: ['@nuxthub/core', '@evlog/nuxthub'],
evlog: {
retention: '7d', // 默认值
},
})
保留格式
保留值由数字和单位组成:
| 单位 | 描述 | 示例 |
|---|---|---|
d | 天 | 7d = 7 天 |
h | 小时 | 24h = 24 小时 |
m | 分钟 | 60m = 60 分钟 |
清理如何工作
该模块注册了一个 Nitro 计划任务(evlog:cleanup),该任务根据保留值生成的 cron schedule 运行。cron 频率设置为保留周期的一半左右:
| 保留周期 | Cron 计划 | 描述 |
|---|---|---|
60m | */30 * * * * | 每 30 分钟 |
24h | 0 */12 * * * | 每 12 小时 |
7d | 0 3 * * * | 每天凌晨 3 点 |
30d | 0 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 配置中注册。