我想重定向所有NSLog输出,以便能够在应用程序内部的UITextView中查看我所有的日志(用于调试目的,也许以后会使用TestFlight记录所有内容)。我不能使用众所周知的DLog,因为我想从我不拥有的框架中捕获日志。在设备上忽略NSLog
我正在通过将'stderr'重定向到管道并从此管道中读取来完成此操作。 无论如何,当应用程序从Xcode中启动时,这在模拟器和设备上运行良好。 但是,当应用程序在设备上“手动”启动时,这不起作用。
看来,NSLog调用对设备没有影响:我没有从管道读取任何东西。但是,如果我手动写入stderr:fprintf(stderr, "test")
我可以从管道读取它,所以问题不在于stderr,而是在NSLog函数中。
为什么它在设备上什么都不做?有没有办法让它写在stderr上甚至在设备上?
如果无法在设备上使用NSLog,还有另一种从外部框架收集日志的方法吗?
谢谢。
我的印象是,除非它通过一个调试运行的NSLog输出不被处理。很明显,手动启动应用程序时没有调试器,但在模拟器中启动应用程序。在生产环境中,即在设备上运行时,NSLog占用的代码行被有效地忽略。 – 2012-07-05 15:35:33
您可以通过使用Organizer查看设备来访问NSLog输出。 – 2012-07-05 15:41:31
谢谢@DanielHanly。我希望有一种方法可以让设备认为它在“调试环境”中运行。我该如何记录TestFlight上发生的事情呢?热舔:嗯,我想要某种实时日志记录,并且我还需要将日志发送到TestFlight。 – user1504454 2012-07-05 15:47:05