Sean Freitag
Sean Freitag

Reputation: 920

What does the prefix in NSLog mean?

When I use NSLog, I get output similar to the following:

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

I recognize that '2012-01-24 17:05:32:860' is the date, 'App' is the app name, but I have no clue what '[21856:71939]' means. Can someone fill me in on what that is and where it's generated at?

All I'm trying to do is get logging that lines up nicely so it's easy to read, but the '[21856:71939]' varies in digits enough to mess up any alignment attempts. If I knew how the numbers in '[21856:71939]' were generated, I could add spaces as needed to make it line up correctly, but that's my only idea at this point.

Any help would be much appreciated :)

Upvotes: 11

Views: 2483

Answers (3)

iccir
iccir

Reputation: 5128

21856 is the process id. 71939 is the thread id.

You can generate this portion of the log on your own using:

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

Edit 2014-09-23:

At least on the simulator in iOS 8, the second number is now the pthread_threadid_np of the thread.

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

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

Upvotes: 16

X Slash
X Slash

Reputation: 4131

It's a thread ID, but I don't actually know how they are generated.

you can grab it yourself using this

    pthread_mach_thread_np(pthread_self())

but that doesn't answer how you would set it up with correct lining. On the other note, when you're debugging, go to the last tab (Show the log Navigator), double click on Debug App, it'll show up nicely

Upvotes: 0

Lily Ballard
Lily Ballard

Reputation: 185751

IIRC, the 21856 is the process PID, and the 71939 is some sort of thread identifier.

Upvotes: 3

Related Questions