NSLog中的前缀是什么意思?

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

2012-01-24 17:05:32:860应用程序[21856:71939] {logging goes here}

我认识到'2012-01-24 17:05:32:860'是date,'App'是应用程序名称,但是我不知道'[21856:71939]'是什么意思。 有人可以填写我是在什么地方生成的?

所有我想要做的就是很好地logging排队,所以它很容易阅读,但'[21856:71939]'的数字变化足以混乱任何alignment尝试。 如果我知道“[21856:71939]”中的数字是如何产生的,那么我可以根据需要添加空格,使其正确排列,但这是我唯一的想法。

任何帮助将非常感激 :)

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

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

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

编辑2014-09-23:

至less在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] 

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

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

你可以使用它自己抓住它

  pthread_mach_thread_np(pthread_self()) 

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