macos unified logging 日志为受保护二进制格式,automator 可通过 shell 脚本调用 log 命令实现关键词提取、诊断报告归档、异常频次提醒、安全脱敏导出及带时间戳的版本管理。
macos 自带的 unified logging 机制已默认启用,日志本身不以明文持续写入,而是存为受保护的二进制归档。automator 不直接解析这些日志,但能串联 log 命令、文本处理与通知逻辑,构建轻量、可触发的日志分析流程——适合排查特定时段异常、导出关键事件或定期归档诊断数据。
用 Automator 抓取指定时间窗口的关键日志
系统日志量大,直接全量查看低效。可通过 Automator 快速提取某一时段内含关键词的条目,比如“kernel panic”、“Wi-Fi disassociated”或自定义服务名:
- 新建“快速操作”,类型选“工作流”或“应用程序”
- 添加“运行 Shell 脚本”动作,Shell 选
/bin/zsh,输入设为“无” - 脚本内容示例:
log show --last 30m --info --debug 2>/dev/null | grep -i "panic\|error\|failed" | head -15 > ~/Desktop/recent-errors-$(date +%H%M).txt - 保存后双击运行,或绑定快捷键,结果将生成带时间戳的纯文本摘要文件
自动化导出并压缩当日诊断报告
崩溃报告、电源事件、网络切换等诊断信息默认存在 ~/Library/Logs/DiagnosticReports/,手动整理费时。Automator 可按日打包归档:
- 新建“文件夹操作”,监控路径设为
~/Library/Logs/DiagnosticReports/ - 添加“过滤 Finder 项目”,条件设为“创建日期在今天”
- 接“移动 Finder 项目”到临时文件夹(如
~/Desktop/diag-tmp) - 再接“运行 Shell 脚本”:
cd ~/Desktop/diag-tmp && zip -q "diag-$(date +%Y%m%d).zip" *.crash *.panic && rm -f *.crash *.panic - 最后加“显示通知”,提示“今日诊断包已生成”
结合 Console 日志结构做简易趋势提醒
虽不能实时绘图,但可借助 log stats 和简单计数,判断某类事件是否异常频发:
- 新建“应用程序”类型工作流
- “运行 Shell 脚本”中执行:
CRASH_COUNT=$(log show --last 24h 2>/dev/null | grep -c "Faulting in CPU")<br>if [ "$CRASH_COUNT" -gt 5 ]; then<br> osascript -e 'display notification "过去24小时CPU故障达 '"$CRASH_COUNT"' 次" with title "日志异常提醒"'
- 该逻辑可扩展:替换关键词为“WiFi”, “Bluetooth”, 或应用名如“Zoom”,用于办公环境日常巡检
安全导出日志供协作分析
向同事或支持团队提供日志时,需避免泄露路径、用户名、API key 等敏感字段。Automator 可调用 sed 或 awk 做基础脱敏:
- 先用
log show --last 1h --json 输出结构化 JSON(便于后续解析) - 再接“运行 Shell 脚本”,用
sed替换典型敏感模式:sed -E 's/"home\/[^"]+\/([^"]+)"/"home\/USER\/\1"/g; s/\/Users\/[^/]+//g' - 输出重定向至
~/Desktop/safe-log-$(date +%s).json,确保原始日志不动,只交付清洗后副本
不复杂但容易忽略:所有日志导出动作建议加时间戳和来源标识,比如在文件头写入 # Generated by Automator on $(date),方便回溯和版本管理。











