2016-12-14 112 views
3

用于日志记录的现代API在终端中很容易配置。然而,Xcode似乎输出所有级别,包括INFO和DEBUG,这是非常烦人的。因为大多数时候你只想看到os_log_errorNSLog又名“出了问题”,“这很重要”。如何在Xcode控制台中禁用os_log_info和os_log_debug消息?

那么有没有什么方法可以在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"); 

电流输出:

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 

首选的输出:

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 
+0

试试这个OS_ACTIVITY_MODE =禁用 –

+0

这将隐藏除NSLog之外的所有消息,这与我想要的完全不同。 – Stream

回答

4

我已经使用了DTS和来自苹果电脑的工程师得到了答案:

新的统一日志记录系统是一个相对较新的加法,唉,Xcode还没有注意到和它在一起。如果您希望看到未来版本的Xcode支持日志过滤,我鼓励您提交描述您需求的增强请求。

所以,请复制rdar://28288063,更请来越好。谢谢!


更新:正如下面马克斯指出,你可以修改的知名度自定义日志:

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"); 

以下终端命令将抑制“信息”和“调试”字符串Xcode

sudo log config --mode "level:default" --subsystem "com.acme.demo" 

重置sy干默认:

sudo log config -reset --subsystem "com.acme.demo" 

要查看当前状态:

sudo log config --subsystem "com.acme.demo" 
2

可以在终端切换调试级:

$ sudo log config --mode "level:debug" --subsystem com.your_company.your_subsystem_name 

要查看当前等级:

$ sudo log config --status --subsystem com.your_company.your_subsystem_name 
Mode for 'com.your_company.your_subsystem_name' DEBUG 

欲了解更多信息,请参阅Apple Documentation