直接用 log show 提取错误级日志的关键是精准过滤 error、fault、panic 等异常条目,而非全量导出;需结合 --level error、--info、--debug 及 grep 或 predicate 等条件缩小范围,支持按时间、子系统、进程等多维度定位问题,并可导出 JSON 结构化数据便于分析。
直接用 log show 提取错误级日志,关键不是“全量导出”,而是精准锁定 error、fault、panic 这三类真正代表系统异常的条目。macos 的统一日志系统默认记录海量信息,混杂调试、通知和常规状态,必须靠过滤条件剔除噪音。
提取最近1小时的 error/fault/panic 日志
这是最常用、响应最快的排查起点,适合刚发生卡顿、闪退或无响应后立即执行:
- 打开终端,运行:
log show --last 1h --level error --info --debug | grep -E "(panic|fault|error|fail|denied)" > ~/Desktop/recent-errors.txt -
--level error确保只抓 error 及更严重级别(含 fault 和 panic) -
--info --debug补充上下文字段,方便后续定位进程或子系统 -
grep进一步筛选关键词,避免漏掉隐含错误语义的条目(如 “failed”、“denied”)
按子系统聚焦特定问题(例如网络或安全)
当怀疑某类功能异常(比如 Wi-Fi 断连、权限报错),可缩小范围,避免被无关日志淹没:
- 查近7天网络相关错误:
log show --last 7d --predicate 'subsystem CONTAINS "network"' --level error | awk '{print $5,$6,$7}' | sort | uniq -c | sort -nr | head -10 > ~/Desktop/network-errors.txt - 查安全服务拒绝事件:
log show --last 24h --predicate 'subsystem == "com.apple.securityd" AND eventMessage contains "denied"' --info - 注意:subsystem 名称可在控制台中点开任意日志查看“子系统”字段,确保拼写准确
提取启动过程中的错误日志
若 Mac 开机慢、卡在 Apple 标志或重启后不稳定,需专门捕获 boot 阶段的异常:
- 获取自上次重启以来所有错误:
log show --last boot --level error --info - 叠加内核与 launchd 相关事件,还原初始化失败链:
log show --predicate 'process == "kernel" OR subsystem == "com.apple.xpc.launchd"' --last boot --level error - 配合 shutdown cause 分析(见“报告”里的诊断文件),能确认是否因硬件或驱动导致强制重启
导出结构化数据便于后续分析
需要存档、比对或交给技术支持时,JSON 格式比纯文本更可靠:
- 导出带时间戳、进程名、子系统的完整错误记录:
log show --last 1h --level error --style json > ~/Desktop/errors.json - JSON 可用 Python 或在线工具解析,字段如
timestamp、process、subsystem、eventMessage都清晰可查 - 日常排查仍推荐
--info --debug+grep组合,更直观易读


















