NSLog()存储在设备(iPhone等)? 如果是的话,在哪里?

是否应该在iTunes的最终应用程序中删除所有NSLog()调用?

在我的iOS应用程序,我有很多NSLog()进行debugging。 在上传到iTunes之前是否应该有条件地将其编码?

这是为iPhone,iPod,iPad的应用程序

谢谢。

你不必删除所有这些; 事实上,如果您的应用在用户的手机上崩溃,并希望他们向您发送崩溃日志,它们可能会很有用。 当用户同步他/她的电话时,崩溃日志位于该文件夹中

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

如果你有NSLog()你可能会获得有用的信息,就像debugging时一样。 正如其他人指出的那样,不要过分,但最终可能会变得有用。

我将在关于日志存储在设备上的标题中回答OP的问题。 NSLog()使用ASL(Apple系统logging器)。 以编程方式,您只能读取最后256个条目(例如,Xcode在pipe理器中显示的内容)。

但是,如果您想访问完整的文件,它们存储在:

 /private/var/log/DiagnosticMessages 

当你看到该目录(注意:设备必须越狱),你会发现一个很长的* .asl文件列表。

我find了一个工具来parsing这些文件,但我还没有尝试过,所以YMMV:

在iOS和OSX上分析苹果系统日志(ASL)文件的乐趣和证据(和Python脚本为你做)

是的,我们应该在上传到iTunes之前删除所有的NSLog()调用。 这主要是为了更好的性能。

即使你不删除他们,没有问题。 它将被批准。 但是,如果你有很多的NSLog(),这将是def。 影响性能。

尝试使用你的NSLogs:

 #define DEBUG #ifdef DEBUG NSLog(@"Your tests outputs"); #endif 

不是全部。 你应该保留错误日志。 如果有任何错误或崩溃,这将很容易find。 它也可以使用Organizer查看NSLog消息。

如果他们添加了反对debugging模式,您不需要删除NSLogs。 所以,即使你的应用程序崩溃,如果它包含用户的个人数据,它将被删除ios。 所以不要担心用户数据和NSLog。 请参阅https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/AnalyzingCrashReports/AnalyzingCrashReports.html。如果您希望,您可以在应用程序中使用此PJiOSAppConsole 。 它只会将日志保存在您的应用程序中。 您可以在运行时通过在#ifdef中添加代码片段,然后在您想要移动的时候删除它。 易于集成和使用。