macOS统一日志系统通过log show命令实时查询结构化数据库,支持时间筛选(--last/--start--end)、NSPredicate谓词精准匹配(如process、subsystem、level)、分页/关键词初筛及JSON/syslog格式导出,用于高效问题定位与离线分析。
macos 的统一日志(unified logging)系统将所有系统、内核、应用和守护进程的日志集中管理,log show 是访问这一数据库最核心的命令。它不读取文本日志文件,而是实时查询结构化日志数据库,支持时间切片、字段筛选、逻辑组合与格式导出,适合精准定位问题而非泛泛浏览。
按时间窗口快速聚焦关键时段
日志量巨大,盲目拉取易淹没重点。用时间参数可立即缩小范围:
- --last 1h、--last 7d:最常用,适用于排查刚发生的异常
- --start "2026-07-06 14:00:00" --end "2026-07-06 14:30:00":精确到秒,适合比对操作前后状态
- 配合 | less 或 | grep -i "error" 可进一步分页或关键词初筛,避免刷屏
用谓词(predicate)精准匹配日志内容
log show 的核心能力来自 NSPredicate 表达式,它直接作用于日志的结构化字段,不是简单字符串搜索:
- eventMessage contains[c] "timeout":[c] 表示忽略大小写,查“Timeout”“TIMEOUT”都命中
- subsystem == "com.apple.networking" AND process == "networkd":锁定特定子系统+进程,排除 nehelper 等干扰项
- eventMessage contains "crash" AND level == 3:level 3 对应 error 级别,避免误抓 debug 日志里的“crash”字眼
定向追踪特定服务或应用行为
每个日志条目都带 process 和 subsystem 标签,这是隔离分析的关键依据:
- 查微信启动失败:log show --predicate 'process == "WeChat" AND eventMessage contains "failed"'
- 盯住图形服务异常:log show --predicate 'subsystem == "com.apple.windowserver"' --last 30m
- 看内容缓存工作状态:log show --predicate 'subsystem == "com.apple.AssetCache"'
导出与格式化便于离线分析
终端输出可直接保存为结构化数据,支持后续处理:
- log show --last 24h --style syslog > ~/Desktop/syslog_24h.txt:生成传统 syslog 格式,兼容旧工具
- log show --predicate 'eventMessage contains "disk full"' --json > ~/Desktop/disk_full.json:导出 JSON,字段完整,适合脚本解析
- 加 --info 或 --debug 可显示更详细的日志元数据(如 trace ID、activity ID),用于链路追踪


















