在Xcode中的调试版本中,无论我是使用模拟器还是实际设备,NSLog,printf,fprintf assert和NSAssert语句都出现在控制台上
如果我现在在设备上运行发布版本(比如说我发送了一个测试版本并在我的iPhone上加了大量的内容;这将是一个发布版本),其中哪些(如果有的话)被记录下来了?
我该如何检索日志?
NSLog实际上是否在发布版本上输出了什么?决定因素是什么?无论是写入stdout还是stderr?只有stderr写入设备日志?这是否意味着我必须使用fprintf?是否已将任何内容写入设备日志?甚至有这样的事情吗?如果是这样,如何捡起来?
有人可以澄清这种情况吗?
我在OS X上运行了cocoa应用程序.我已经使用NSLog进行调试.现在我想将日志语句重定向到文件而不是控制台.
我已经使用过这种方法,但它会导致在Console和文件中记录.
- (BOOL)redirectNSLog
{
// Create log file
[@"" writeToFile:@"/NSLog.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
id fileHandle = [NSFileHandle fileHandleForWritingAtPath:@"/NSLog.txt"];
if (!fileHandle) return NSLog(@"Opening log failed"), NO;
[fileHandle retain];
// Redirect stderr
int err = dup2([fileHandle fileDescriptor], STDERR_FILENO);
if (!err) return NSLog(@"Couldn't redirect stderr"), NO;
return YES;
}
Run Code Online (Sandbox Code Playgroud)
是否有可能在控制台中没有日志语句但只能在文件中?