查看`非Xcode启动的程序`的log信息

今天主要给大家安利一个好东西,虽然基本上你用不到。

iOS打印log信息的方法有两种:

  • 使用C方法 printf fprintf
  • 使用Foundation框架的 NSLog

    我们在程序中写入这些代码,当程序运行到这里就会在Xcode控制台输入对应的log。如下是一段输出日志的示例代码

    NSLog(@"GGGG Data 数据1");
    NSLog(@"GGGG Handle 处理事件3");
    NSLog(@"GGGG Data 数据2");
    NSLog(@"GGGG Handle 处理事件4�");
    NSLog(@"GGGG ---------------");
    printf("GGGG Data 数据1\n");
    printf("GGGG Handle 处理事件3\n");
    printf("GGGG Data 数据2\n");
    printf("GGGG Handle 处理事件4\n");
    printf("GGGG ---------------\n");
    

    在Xcode中输出的结果如下

    2017-05-17 15:45:51.428974 NSLog&printf[8764:2333119] GGGG Data 数据1
    2017-05-17 15:45:51.429259 NSLog&printf[8764:2333119] GGGG Handle 处理事件3
    2017-05-17 15:45:51.429412 NSLog&printf[8764:2333119] GGGG Data 数据2
    2017-05-17 15:45:51.429546 NSLog&printf[8764:2333119] GGGG Handle 处理事件4�
    2017-05-17 15:45:51.430025 NSLog&printf[8764:2333119] GGGG ---------------
    GGGG Data 数据1
    GGGG Handle 处理事件3
    GGGG Data 数据2
    GGGG Handle 处理事件4
    GGGG ---------------
    

    当然前提是:你必须使用Xcode左上角的启动按钮,启动该应用程序,才能在控制台上看到这些log。也就是说,如果没有经过Xcode启动,自己手动运行起来的程序,其中输出的log在控制台上是看不到的。

    大多数情况下,通过启动查看log这样已经够用了,相信这个控制台足够用到永远。直到有一天,我遇到了DeepLink。。。
    运行过程是怎么样呢?就是在Safari里面输入这样的链接schem://home?name='GGG'&age='年芳二八',其中schem是app注册的一个URL Type串,浏览这个URL地址将会打开你的app。
    这个时候,app就不是由Xcode启动的了。而好死不死的又会有想要看看log信息的需求,以跟踪下app业务流程,数据处理等信息。可是此时log信息在控制台中看不到啊!!!

    当然,想看这种非Xcode启动的情况下的log信息,方法还是有的

    Xcode->Window->Devices->选择要查看log的设备->点击底部向上的箭头(show the device console)
  • mac自带程序控制台

    第一种方法的结果是什么样的呢?
    一打开console,该设备上所有的log信息:包括系统log、你的log、其他三方程序log,一股脑哗啦啦的刷刷刷,真要亮瞎我的狗眼。
    不过好在它支持搜索,command+F,输入我们app的名称,就能直接定位到app输出的log了。
    如何,在一堆垃圾log中找到我们想看的log是不是有些累了,中文也都被转成了一堆不可描述的字符。更可怕的是,Demo中的log是一连串的,实际工程中,app的log肯定是跟系统log、其他log混杂在一起的,那就更加爽爆了。
    注意:我们也可以从log中看出,printf输出的信息都不见了。相信你在程序中一般也不会用printf

    接下来,就是重头戏了,给大家安利的一个好东西,用这个来看log不知比第一种方法好几千几百倍。
    这个工具一定是什么了不得的工具了,没错,就是那个一直被我们忽略在角落,一直放在《其他》文件夹,貌似不知道有什么用也永远不会用到的控制台注意:不是终端Terminal,而是控制台