如何在Xcode控制台中禁用os_log_info和os_log_debug消息?

Vad*_*dim 4 terminal console xcode logging ios

现代的日志记录API可在终端轻松配置.但是,Xcode似乎输出所有级别,包括INFO和DEBUG,这非常烦人.因为你最想看到的只是时间os_log_errorNSLog又名"出事了"和"这很重要".

那么有没有办法只在Xcode控制台中显示特定级别?

os_log_info(OS_LOG_DEFAULT, "Info");
os_log_debug(OS_LOG_DEFAULT, "Debug");
os_log_error(OS_LOG_DEFAULT, "Error");
os_log_fault(OS_LOG_DEFAULT, "Fault");
os_log(OS_LOG_DEFAULT, "Default");
NSLog(@"NSLog");
Run Code Online (Sandbox Code Playgroud)

当前输出:

2016-12-14 15:37:00.170807 Test[5681:2205834] Info
2016-12-14 15:37:00.170830 Test[5681:2205834] Debug
2016-12-14 15:37:00.170835 Test[5681:2205834] Error
2016-12-14 15:37:00.170839 Test[5681:2205834] Fault
2016-12-14 15:37:00.170860 Test[5681:2205834] Default
2016-12-14 15:37:00.170869 Test[5681:2205834] NSLog
Run Code Online (Sandbox Code Playgroud)

首选输出:

2016-12-14 15:37:00.170835 Test[5681:2205834] Error
2016-12-14 15:37:00.170839 Test[5681:2205834] Fault
2016-12-14 15:37:00.170860 Test[5681:2205834] Default
2016-12-14 15:37:00.170869 Test[5681:2205834] NSLog
Run Code Online (Sandbox Code Playgroud)

Vad*_*dim 5

我使用过DTS并得到了Apple工程师的答案:

新的统一日志系统是一个相对较新的新增功能,唉,Xcode尚未赶上它.如果您希望看到未来版本的Xcode支持日志过滤,我建议您提交描述您的要求的增强请求.

所以请复制rdar://28288063,请求越多越好.谢谢!


更新:如下面的Max所述,您可以修改自定义日志的可见性:

os_log_t custom = os_log_create("com.acme.demo", "custom");
os_log_info(custom, "Info");
os_log_debug(custom, "Debug");
os_log_error(custom, "Error");
os_log_fault(custom, "Fault");
os_log(custom, "Default");
Run Code Online (Sandbox Code Playgroud)

以下Terminal命令将禁止Xcode中的 "Info"和"Debug"字符串:

sudo log config --mode "level:default" --subsystem "com.acme.demo"
Run Code Online (Sandbox Code Playgroud)

要重置系统默认值:

sudo log config -reset --subsystem "com.acme.demo"
Run Code Online (Sandbox Code Playgroud)

要检查当前状态:

sudo log config --subsystem "com.acme.demo"
Run Code Online (Sandbox Code Playgroud)