在Xcode中的调试版本中,无论我是使用模拟器还是实际设备,NSLog,printf,fprintf assert和NSAssert语句都出现在控制台上
如果我现在在设备上运行发布版本(比如我发送测试版本并在我的iPhone上加大版本;这将是一个发布版本),其中哪些(如果有的话)被记录?
如何检索日志?
NSLog实际上是否在发布版本上输出了什么?决定因素是什么?无论是写入stdout还是stderr?只有stderr写入设备日志?这是否意味着我必须使用fprintf?是否已将任何内容写入设备日志?甚至有这样的事情吗?如果是这样,如何接受它?
有人可以澄清情况吗?
答案 0 :(得分:137)
在Xcode 6.1.1中,您可以通过执行以下操作来查看NSLog输出。但是,我不确定它是否会让你看到太远的日志。我只看到它可以回到几个小时。
无论如何,以下是步骤:
答案 1 :(得分:86)
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);
只需在app委托文件的application:didFinishLaunchingWithOptions
方法中添加此代码块,它就会在iPhone上的app document目录中创建一个日志文件,记录所有控制台日志事件。您需要从iTunes导入此文件才能查看所有控制台事件。
注意:在.plist文件中,请确保Application supports iTunes file sharing
存在且设置为YES
,以便您可以通过iTunes访问。
获取日志文件: 启动itunes,在您的设备连接选择的应用程序后 - 选择您的应用程序 - 在Augument文档中,您将获得您的文件。然后,您可以将其保存到磁盘
答案 2 :(得分:19)
在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
解释的过程相同只需在app delegate文件中的application:didFinishLaunchingWithOptions方法中添加此代码块,它将在iPhone上的app document目录中创建一个日志文件,记录所有控制台日志事件。您需要从iTunes导入此文件才能查看所有控制台事件。
注意:在.plist文件中,请确保
Application supports iTunes file sharing
存在且设置为YES
,以便您可以访问 通过iTunes。获取日志文件:在设备连接后启动iTunes 选择应用程序 - 选择您的应用程序 - 在Augument文档中,您将获得您的 文件。然后,您可以将其保存到磁盘
答案 3 :(得分:11)
NSLog写入生产版本中的设备日志,您可以通过将iPhone连接到系统并使用管理器来检查。在管理器中选择您的iPhone,单击设备日志。您将在日志中看到所有NSLog输出。
答案 4 :(得分:7)
我发现APPLE的这个链接信息丰富且完整。 它几乎为您提供了查看或访问设备日志的所有选项,无论它们是否连接到您的开发机器。
https://developer.apple.com/library/ios/qa/qa1747/_index.html
答案 5 :(得分:2)
是的,NSLog在设备上输出。您可以在设备连接到Mac并使用Xcode Organizer工具的情况下看到它的输出。
答案 6 :(得分:2)
如果您使用Testflight SDK,则可以使用Remote Logging feature。
捕获所有日志答案 7 :(得分:0)
我知道这是一个旧线程,但你也可以访问设备日志:
设置 - >隐私 - >分析 - >数据
希望这个帮助
此致
答案 8 :(得分:0)
我认为在Xcode 9.3中,设备日志屏幕已移至新位置。请参阅以下链接。