telescope:clear 命令物理清空 Telescope 所有主表数据(如 telescope_entries),不触发模型事件,需配合 pause/resume 避免写入冲突;prune 按时间精细清理,默认删 48 小时前数据,注意时区对齐。
telescope:clear 能清空所有数据,但不是“日志”而是调试条目
telescope 没有传统意义上的“日志文件”,它把所有请求、异常、查询、模型事件等都存进数据库表(如 telescope_entries、telescope_entries_tags)。所以所谓“重置日志数据”,本质是清空这些表里的记录。php artisan telescope:clear 就是为此设计的命令——它会 truncate 所有 telescope 主表,比手动写 sql 更安全,也自动处理外键依赖。
- 执行后所有监控历史瞬间消失,包括已归档的旧条目
- 不会删表结构,也不会影响
migrations表或你的业务数据 - ⚠️ 注意:该命令不走 Eloquent,不触发模型事件,也不调用软删除逻辑 —— 是真·物理删除
- 如果你启用了
TELESCOPE_MODEL_WATCHER=true,模型变更记录也会一并清除
想保留部分数据?别用 clear,改用 prune 控制时间范围
有时候你只是想甩掉最近一周的脏数据,又不想连刚配好的测试链路都丢了。telescope:prune 就是更精细的方案:它按时间戳删,只清理超过指定天数的条目,默认是 48 小时(可通过 --hours 或 --days 调整)。
- 例如清掉 7 天前的所有记录:
php artisan telescope:prune --days=7 - 它会自动识别并清理关联表(tags、monitored-tags 等),避免孤儿数据
- ⚠️ 坑点:如果数据库时区和 PHP 时区不一致(比如 DB 是 UTC,APP 是 Asia/Shanghai),
--days可能误删或漏删 —— 建议先查下telescope_entries.created_at的实际值确认时区对齐 - 这个命令适合加进定时任务,比如每天凌晨跑一次,比
clear更贴近真实运维场景
暂停采集再清空,避免边删边写导致数据不一致
直接 telescope:clear 时,如果恰巧有请求正在写入 Telescope 表,可能造成部分新条目残留,或触发唯一索引冲突(尤其在高并发开发环境)。稳妥做法是先暂停采集,再清空,最后恢复。
- 三步顺序不能错:
php artisan telescope:pause→php artisan telescope:clear→php artisan telescope:resume -
pause实际是往telescope_monitoring表里插了一条禁用标记,不影响其他功能 - ⚠️ 坑点:如果执行
pause后忘记resume,后续所有调试数据都不会被捕获,且面板上不会报错,只会显示“无数据”——容易误以为配置失效 - 这个组合特别适合 CI 测试前重置环境,或本地调试卡顿时快速回归干净状态
手写 SQL 清空?可以,但得绕开外键和迁移锁
极少数情况(比如表被自定义修改过、或 telescope:clear 报错),你可能得自己 truncate。但直接 TRUNCATE TABLE telescope_entries 会失败——因为外键约束和可能的迁移锁。
- 必须按依赖顺序清空:
telescope_entries_tags→telescope_monitoring→telescope_entries - 推荐用
DELETE FROM+WHERE 1替代TRUNCATE,避开 AUTO_INCREMENT 重置和锁表问题 - 示例(MySQL):
DELETE FROM telescope_entries_tags; DELETE FROM telescope_monitoring; DELETE FROM telescope_entries; - ⚠️ 坑点:Laravel 默认开启
strict mode,某些 MySQL 版本下DELETE不带LIMIT会报错;可临时加SET SQL_SAFE_UPDATES = 0;,但执行完记得关掉











