我想重定向所有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