NSLog中的前缀是什么意思?

时间:2012-01-24 23:10:01

标签: objective-c ios

当我使用NSLog时,我得到的输出类似于以下内容:

2012-01-24 17:05:32:860 App [21856:71939] {logging goes here}

我认识到'2012-01-24 17:05:32:860'是日期,'App'是应用名称,但我不知道'[21856:71939]'是什么意思。有人可以告诉我这是什么以及它产生于何处?

我所要做的就是让日志记录很好,所以它很容易阅读,但'[21856:71939]'的数字变化足以弄乱任何对齐尝试。如果我知道'[21856:71939]'中的数字是如何生成的,我可以根据需要添加空格以使其正确排列,但这是我此时唯一的想法。

非常感谢任何帮助:)

3 个答案:

答案 0 :(得分:14)

21856是进程ID。 71939是线程ID。

您可以使用以下方式自行生成此部分日志:

[NSString stringWithFormat:@"[%ld,%lx]",
    (long) getpid(),
    (long) pthread_mach_thread_np(pthread_self())];

编辑2014-09-23:

至少在iOS 8的模拟器上,第二个数字现在是线程的pthread_threadid_np

    __uint64_t threadId;
    if (pthread_threadid_np(0, &threadId)) {
        threadId = pthread_mach_thread_np(pthread_self());
    }

    [NSString stringWithFormat:@"[%ld,%llu]", (long) getpid(), threadId]

答案 1 :(得分:3)

IIRC,21856是进程PID,71939是某种线程标识符。

答案 2 :(得分:0)

这是一个线程ID,但我实际上并不知道它们是如何生成的。

你可以使用这个

自己抓住它
    pthread_mach_thread_np(pthread_self())

但这并没有回答你如何设置正确的衬里。另一方面,当你正在调试时,转到最后一个选项卡(显示日志导航器),双击调试应用程序,它会很好地显示