macOS 控制台(Console)默认以结构化方式展示 unified logging 日志,每条记录含时间戳、进程名、子系统、类别、等级和消息正文,支持自定义显示列、排序及启用简介面板查看完整上下文。
macos 控制台(console)默认以结构化方式展示 unified logging 日志,每条记录包含时间戳、进程名、子系统、类别、等级(如 error、info、debug)和消息正文。它不是纯文本日志流,而是从二进制日志数据库中实时解码渲染的视图——因此格式由系统统一定义,不可修改字段语义,但可自定义哪些字段显示、如何排列、是否展开详情。
理解控制台日志的核心字段含义
打开 Console 后,默认列通常包括“时间”“进程”“子系统”“消息”。这些字段对应底层 log 数据的结构化属性:
-
时间:精确到毫秒的系统本地时间(非 UTC),由日志写入时自动打点
-
进程:发起日志的可执行文件名(如 kernel、WindowServer、Safari),不含 PID;同一进程多个线程日志会共用该名
-
子系统:Apple 定义的模块路径(如 com.apple.networking、com.apple.securityd),用于归类功能域
-
类别:开发者指定的逻辑分组标签(如 Network、Storage),需代码中显式设置,非所有日志都有
-
等级:日志严重性标识(fault > error > warning > info > debug > default),影响是否默认显示(Console 默认隐藏 debug 级别)
-
消息:实际文本内容,可能含变量插值(如 Failed to connect to %@:%d),但 Console 显示的是已填充后的结果
添加或隐藏关键显示列
列设置直接影响排查效率,比如调试网络问题时需同时看“进程”“子系统”“等级”,而查崩溃则要关注“PID”和“Sender ID”。
- 按住 Control 键点按任意列标题,弹出菜单列出所有可用字段(如 PID、Sender ID、Thread ID、Category、Level、Subsystem、Process、Message、Timestamp)
- 勾选即显示,取消勾选即隐藏;已启用的列名旁带对勾
- 常用组合建议:
– 基础排查:时间、进程、子系统、等级、消息
– 进程级追踪:加 PID 和 Sender ID
– 多线程分析:加 Thread ID
– 开发调试:加 Category 和 Level - 拖动列标题边缘可调整宽度;拖拽列标题本身可改变左右顺序
启用简介面板查看完整上下文
单行消息常被截断,真正有用的上下文(如堆栈、原始参数、关联活动 ID)藏在简介面板里。
- 点按工具栏中的 “简介”按钮(图标为两页重叠文档),或使用菜单“显示 > 显示简介面板”
- 选中某条日志后,窗口下半部分会展开详细字段,包括:
– 完整未截断消息
– Activity Identifier(用于跨日志关联操作链)
– Process Path(绝对路径,如 /usr/bin/python3)
– Sender Name(服务 Bundle ID,如 com.apple.WebKit.Networking)
– OS Version、Boot UUID 等环境元数据 - 简介面板支持滚动,也支持 Cmd+F 在其中搜索关键词
让列设置长期生效的小技巧
Console 不自动保存列配置,但可通过以下方式避免每次重开都要调整:
- 调整好列后,立即创建一个存储的搜索(如命名为“Debug View”),它会记住当前可见列+筛选条件
- 下次从边栏“个人收藏”中点击该搜索,即可一键还原全部视图状态
- 退出前确保处于“现在模式”(点按工具栏“现在”按钮),这样重启后仍保持实时流+当前列布局
- 注意:列设置不随 .logarchive 归档文件保存,打开归档时需重新配置