macos shortcuts 可通过调用 log 命令解析 unified logging 日志,读取 .logarchive/.crash 文件,实现定时扫描、差异比对、通知推送及跨设备同步分析结果。

macOS Shortcuts 本身不能直接解析 Unified Logging 的二进制日志(如 /var/db/diagnostics/ 中的数据),但可以无缝调用系统原生命令和工具,完成“读取—筛选—分析—通知”闭环。关键在于绕过 GUI 限制,用终端能力补足 Shortcuts 的文本处理短板。
用 Shortcuts 调用 log 命令提取结构化日志
Shortcuts 支持“运行脚本”动作,可执行 log show 或 log stream,获取纯文本日志流:
- 新建个人自动化或快捷指令,添加“运行 Shell 脚本”动作,Shell 选
/bin/zsh - 输入命令如:
log show --last 15m --predicate 'eventMessage contains[c] "error" OR eventMessage contains[c] "panic"' --style syslog - 勾选“传递输入”并设为“无”,避免误传参数;输出结果自动进入后续动作
- 接“文本”动作可进一步用正则提取错误模块名、时间戳或进程 ID
自动化分析本地 .logarchive 或 .crash 文件
系统生成的诊断归档(如 ~/Library/Logs/DiagnosticReports/ 下的 .panic、.crash)是标准文本格式,Shortcuts 可直接读取:
- 用“获取文件”动作定位目标报告(支持通配符,如
**/*.panic) - 接“读取文件”动作,选择编码 UTF-8,输出为原始文本
- 用“文本”→“查找文本”匹配关键词:例如搜索
"Previous shutdown cause:",再用“提取文本”取其后 3 个字符,得到关机原因码(如5) - 配合“如果”条件判断:若提取值为
"5",则触发“显示通知”提示“可能因温度过高关机”
定时扫描 + 差异比对识别异常频次
单纯读取一次日志价值有限,Shortcuts 可结合文件时间戳与历史记录做轻量趋势判断:
- 创建自动化,触发器设为“每天上午 9 点”
- 先用“获取文件”读取上一次保存的摘要(如
~/Desktop/last-error-count.txt),若不存在则默认为 0 - 再运行脚本:
log show --last 24h --predicate 'level == "error"' | wc -l,统计当日 error 条数 - 用“计算”动作比较差值,若增长超 3 倍,就发通知+附加最近 5 条 error 内容
- 最后把新数值写回
last-error-count.txt,供下次比对
导出分析结果并同步到其他设备
分析完的日志摘要不只留在 Mac 上,可即时流转:
- 将提取的关键信息(时间、错误类型、进程名)组合成 Markdown 文本
- 用“存储文件”动作保存到 iCloud 云盘指定文件夹(如
iCloud/Logs/Analysis/) - 接“发送邮件”或“推送通知”动作,向自己手机发送摘要(需在 iPhone 上开启“快捷指令”iCloud 同步)
- 也可用“运行快捷指令”调用另一条跨设备指令,比如把 panic 原因码同步到 iPhone 备忘录并高亮标红











