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应用程序,它会很好地显示