如何在Xcode控制台屏蔽OSLogs?含系统级禁用方案
解决Xcode中过滤/禁用OSLogs的方案
一、Xcode控制台精准过滤
- 快速排除苹果官方日志:在Xcode控制台的搜索框里输入
subsystem:!com.apple,直接屏蔽所有苹果官方组件的OSLog,只显示你自己的日志和程序输出。要是只想排除URLSession的日志,就输入subsystem:!com.apple.network(URLSession的日志归属这个subsystem)。 - 保存自定义过滤规则:点击控制台搜索框右侧的漏斗图标,选择「Edit Filter」,在弹窗里添加规则:选「Subsystem」,条件设为「does not contain」,值填「com.apple」,保存后就能一直用这个过滤规则,不用每次手动输入。
二、Scheme配置全局禁用OSLog
要是完全不想看到任何OSLog(包括自己的),可以这么做:
- 点击Xcode顶部的scheme名称,选择「Edit Scheme」
- 切换到「Run」->「Arguments」标签,在「Environment Variables」里添加
OS_ACTIVITY_MODE,值设为disable - 运行项目后,控制台就不会再输出任何OSLog内容,只会显示stdout/stderr的输出
三、代码层面隔离自定义日志
如果你自己也在用OSLog,给你的日志单独指定subsystem和category,就能轻松和系统日志区分开:
// 示例:Swift代码中定义自定义OSLog let customLog = OSLog(subsystem: "com.yourcompany.yourapp", category: "business") os_log("用户登录成功", log: customLog, type: .info)
之后在控制台搜索框输入subsystem:com.yourcompany.yourapp,就能只看到你自己的日志,系统的日志会被自动过滤掉。
四、系统级屏蔽特定组件的error日志
虽然log CLI默认不能全局禁用error级别日志,但可以针对具体subsystem关闭所有日志:
- 打开终端,执行命令关闭URLSession的日志:
log config --subsystem com.apple.network --mode level:off - 想要恢复的话,执行:
log config --subsystem com.apple.network --mode level:default
注意:这个设置是全局生效的,会影响所有使用该subsystem的进程,重启Mac后会恢复默认设置。
内容的提问来源于stack exchange,提问作者Wade Tregaskis
相关产品推荐
相关产品推荐

