macOS 控制台日志格式解析及自定义显示列设置

作者:袖梨 2026-07-08
macOS 控制台(Console)默认以结构化方式展示 unified logging 日志,每条记录含时间戳、进程名、子系统、类别、等级和消息正文,支持自定义显示列、排序及启用简介面板查看完整上下文。

macos 控制台(console)默认以结构化方式展示 unified logging 日志,每条记录包含时间戳、进程名、子系统、类别、等级(如 error、info、debug)和消息正文。它不是纯文本日志流,而是从二进制日志数据库中实时解码渲染的视图——因此格式由系统统一定义,不可修改字段语义,但可自定义哪些字段显示、如何排列、是否展开详情。

理解控制台日志的核心字段含义

打开 Console 后,默认列通常包括“时间”“进程”“子系统”“消息”。这些字段对应底层 log 数据的结构化属性:

  • 时间:精确到毫秒的系统本地时间(非 UTC),由日志写入时自动打点
  • 进程:发起日志的可执行文件名(如 kernelWindowServerSafari),不含 PID;同一进程多个线程日志会共用该名
  • 子系统:Apple 定义的模块路径(如 com.apple.networkingcom.apple.securityd),用于归类功能域
  • 类别:开发者指定的逻辑分组标签(如 NetworkStorage),需代码中显式设置,非所有日志都有
  • 等级:日志严重性标识(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 归档文件保存,打开归档时需重新配置

相关文章

精彩推荐