在设备上logging数据并检索日志

在Xcode的debugging版本中,无论是使用模拟器还是实际的设备,NSLog,printf,fprintf assert和NSAssert语句都会在控制台上出现

如果我现在在设备上运行一个发布版本(比如说我发送一个testing飞行版本,并在我的iPhone上发布它,这将是一个发布版本),哪些(如果有的话)被logging?

我如何检索日志?

NSLog实际上是在发布版本上输出的东西吗? 什么是决定性因素? 无论是写入stdout还是stderr? 只有stderr写入设备日志? 这是否意味着我必须使用fprintf? 是否有任何写入设备日志? 有甚至有这样的事情吗? 如果是这样,如何捡起来?

有人能澄清这个情况吗?

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *fileName =[NSString stringWithFormat:@"%@.log",[NSDate date]]; NSString *logFilePath = [documentsDirectory stringByAppendingPathComponent:fileName]; freopen([logFilePath cStringUsingEncoding:NSASCIIStringEncoding],"a+",stderr); 

只需在application:didFinishLaunchingWithOptions程序委托文件的application:didFinishLaunchingWithOptions方法中添加此代码块,它将在iPhone上的应用程序文档目录中创build一个日志文件,该日志文件logging所有控制台日志事件。 您需要从iTunes导入此文件以查看所有控制台事件。

注意:在.plist文件中,确保Application supports iTunes file sharing存在,并设置为YES以便您可以通过iTunes访问。

获取日志文件:启动iTunes后,您的设备已连接select应用程序 – select您的应用程序 – 在Augument文档中,您将获得您的文件。 然后您可以将其保存到您的磁盘

在Xcode 6.1.1中,通过执行以下操作可以查看NSLog输出。 不过,我不确定它是否能让你从太久的日志中看到日志。 我只看到它回到几个小时。

无论如何,这里是步骤:

  1. 在Xcode中,转到窗口 – >设备。
  2. 在左侧面板中select您的设备。
  3. 点击下面的截图所示的小箭头。

在这里输入图像说明

NSLog被写入生产版本的设备日志中,您可以通过将iPhone连接到您的系统并使用Organizer进行检查。 在pipe理器中select你的iPhone,点击设备日志。 你会看到日志中的所有NSLog输出。

在swift 3.0中,Shyl的代码会变成,

 var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true) let documentsDirectory = paths[0] let fileName = "\(Date()).log" let logFilePath = (documentsDirectory as NSString).appendingPathComponent(fileName) freopen(logFilePath.cString(using: String.Encoding.ascii)!, "a+", stderr) 

所有其他的过程都是由Shyl解释的

只需在应用程序委托文件的application:didFinishLaunchingWithOptions方法中添加此代码块,它将在iPhone上的应用程序文档目录中创build一个日志文件,该日志文件logging所有控制台日志事件。 您需要从iTunes导入此文件以查看所有控制台事件。

注意:在.plist文件中,确保Application supports iTunes file sharing存在,并设置为YES以便您可以通过iTunes进行访问。

获取日志文件:启动iTunes后,您的设备已连接select应用程序 – select您的应用程序 – 在Augument文档中,您将获得您的文件。 然后您可以将其保存到您的磁盘

我发现从APPLE这个链接非常丰富和完整。 它几乎为您提供了查看或访问设备日志的所有选项,而不pipe它们是否连接到您的开发机器。

https://developer.apple.com/library/ios/qa/qa1747/_index.html

是的,设备上的NSLog输出。 你可以看到它的输出与你的设备连接到你的Mac和使用Xcode组织者工具。

如果您使用Testflight SDK,则可以使用其“ 远程日志logging”function捕获所有日志。