现代的日志记录API可在终端轻松配置。但是,Xcode似乎输出所有级别,包括INFO和DEBUG,这非常烦人。因为大多数情况下,您只想看到os_log_error
和NSLog
又名“出错”和“这很重要”。
那么有没有办法只在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 :(得分: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");
以下终端命令将禁止 Xcode 中的“Info”和“Debug”字符串:
sudo log config --mode "level:default" --subsystem "com.acme.demo"
重置系统默认值:
sudo log config -reset --subsystem "com.acme.demo"
检查当前状态:
sudo log config --subsystem "com.acme.demo"
答案 1 :(得分:3)
您可以在终端中切换调试级别:
$ 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
答案 2 :(得分:0)
通过在方案的环境变量部分将 OS_ACTIVITY_MODE
设置为 default
,我已经设法获得了预期的效果。
编辑: 我看到这仅省略了调试日志级别。信息仍显示。