NSLog中的前缀是什么意思?

11

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

2012-01-24 17:05:32:860 App[21856:71939] {日志内容}

我知道'2012-01-24 17:05:32:860'是日期,'App'是应用程序名称,但我不知道'[21856:71939]'是什么意思,也不知道它是在哪里生成的。有人能告诉我这是什么以及它是如何产生的吗?

我只想获得对齐整齐、易读的日志记录,但'[21856:71939]'中的数字变化很大,足以破坏任何对齐尝试。如果我知道'[21856:71939]'中的数字是如何生成的,我可以根据需要添加空格使其正确对齐,但这是我目前唯一的想法。

如果有人能帮忙解决,谢谢!:)


我也很好奇这个。 - eric.mitchell
3个回答

16

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
仍然有效。但是这只适用于实际设备,而不适用于模拟器。 - batkuip

3
据我所知,21856是进程PID,而71939是某种线程标识符。

0

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

你可以使用这个来获取它。

    pthread_mach_thread_np(pthread_self())

但这并没有回答如何设置正确的对齐方式。另外,当你在调试时,转到最后一个选项卡(显示日志导航器),双击“Debug App”,它会很好地显示出来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接