Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

is NSLog() stored on the device (iPhone etc)? If so, where?

Should all NSLog() calls be deleted in the final app for iTunes?

In my iOS app, I've got lots of NSLog() for debug. Should I conditionally code them out before uploading to iTunes?

This is for an app for: iPhone, iPod, iPad

Thanks.

like image 313
Doug Null Avatar asked Jul 12 '11 11:07

Doug Null


2 Answers

I'll answer the OP's question in the title about where the logs are stored on the device. NSLog() uses the ASL (Apple System Logger). Programmatically, you can only read the last 256 entries (which is what Xcode shows in the Organizer, for example).

However, if you want to access the full files, they are stored in:

/private/var/log/DiagnosticMessages

When you look into that directory (note: device must be Jailbroken), you'll find a long list of *.asl files.

I found a tool to parse those files, but I haven't tried it yet, so YMMV:

Parsing Apple System Log (ASL) files on iOS and OSX for Fun and Evidence (and a Python script to do it for you)

like image 127
Chris De Laet Avatar answered Oct 12 '22 15:10

Chris De Laet


You don't have to remove all of them; in fact, they can be useful if your app crashes on a user's phone and you want them to send you a crash log. When a user syncs his/her phone, the crash log is located in the folder

~/Library/Logs/CrashReporter/MobileDevice/<DEVICE_NAME>

If you have NSLog()s you may gain useful information just as you would when debugging. As the others pointed out, don't overdo it, but it they could end up being useful.

like image 35
Chris Gregg Avatar answered Oct 12 '22 14:10

Chris Gregg