在 macos 终端中可用 log show 命令按精确时间范围(--start/--end)、相对时长(--last)、日志级别(--level)或进程/关键词(--predicate)检索系统日志,并支持导出为文件;时间格式须严格为 yyyy-mm-dd hh:mm:ss,本地时区自动识别。

在 macOS 终端中按具体起止日期精准检索系统日志,能跳过无关时段、直击故障发生窗口,避免被数天日志淹没。你不需要先打开图形界面,也不依赖缓存刷新延迟,命令执行后立即从 Unified Logging 数据库拉取原始结构化记录。
用 log show 指定精确起止时间
这是最直接的方法,适用于已知故障发生的具体时刻(例如 2026-09-16 14:22:05 到 2026-09-16 14:38:41)。
第一步:打开“终端”应用(可在“访达”→“应用程序”→“实用工具”中找到,或用 Spotlight 搜索启动)。
第二步:输入命令,严格按 YYYY-MM-DD HH:MM:SS 格式填写起止时间,注意引号不能省略:
log show --start "2026-09-16 14:22:05" --end "2026-09-16 14:38:41"
第三步:回车执行。系统将立即返回该时间段内所有日志条目,每行含时间戳、进程名、子系统和消息内容。若结果过多,可追加 | less 分页浏览。
⚠️ 注意:时间格式必须完全匹配,空格、冒号、横杠缺一不可;系统自动识别本地时区,无需手动转换 UTC。
用 --last 快速回溯最近 N 小时/天
当你只记得大概时间(比如“昨天下午出问题”或“开机后半小时内崩溃”),用 --last 更高效,不用手动算时间点。
log show --last 2h 查最近两小时全部日志
log show --last 1d 查过去 24 小时日志
log show --last boot 只取自上次重启以来的所有日志——这对分析启动失败特别有用,因为时间范围自动锚定在 kernel 初始化那一刻。
组合关键词缩小结果范围
单纯按时间拉取可能仍包含大量无关信息,叠加关键词才能锁定真正的问题线索。
方法一:筛选错误级别日志
log show --start "2026-09-16 14:22:05" --end "2026-09-16 14:38:41" --level error
方法二:同时限定时间和进程
log show --start "2026-09-16 14:22:05" --end "2026-09-16 14:38:41" --predicate 'process == "WindowServer"'
方法三:查崩溃相关关键词(忽略大小写)
log show --start "2026-09-16 14:22:05" --end "2026-09-16 14:38:41" --predicate 'eventMessage contains[c] "panic" OR eventMessage contains[c] "crash"'
这一步操作起来很简单,但漏掉 [c] 标志会导致大小写敏感匹配失败,搜不到 “Panic” 这样的首字母大写记录。
导出为文件便于离线比对
当需要把日志发给技术支持、或用文本工具做正则分析时,必须保存为本地文件。
log show --start "2026-09-16 14:22:05" --end "2026-09-16 14:38:41" --level fault > ~/Desktop/fault_range.txt
该命令会把所有符合时间与级别条件的 Fault 级日志,完整写入桌面的 fault_range.txt 文件中,包含原始时间戳和上下文字段。
【文件路径必须用英文波浪线 ~,不能写成“桌面”或中文路径】











