Регистрация данных на устройстве и получение журнала - PullRequest
72 голосов
/ 01 февраля 2012

При отладочной сборке в Xcode, независимо от того, использую ли я симулятор или реальное устройство, на консоль выводятся операторы NSLog, printf, fprintf assert и NSAssert

Если я сейчас запустил сборку релиза на устройстве (скажем, я отправил сборку тестового полета и установил ее на своем iPhone; это будет сборка релиза), что из этого (если есть) будет записано?

А как мне получить журнал?

NSLog действительно выводит что-то при сборке релиза? Что является определяющим фактором? Пишет ли это в stdout или stderr? только stderr записывается в журнал устройства? Значит ли это, что я должен использовать fprintf? НИЧЕГО записано в журнал устройства? есть ли такая вещь? Если да, то как его забрать?

Может ли кто-нибудь прояснить ситуацию?

Ответы [ 9 ]

137 голосов
/ 07 января 2015

В Xcode 6.1.1 вы можете просмотреть вывод NSLog, выполнив следующее.Тем не менее, я не уверен, что он позволяет вам просматривать журналы слишком давно.Я только видел, как это вернулось на пару часов назад.

В любом случае, вот шаги:

  1. В Xcode перейдите в Window -> Devices.
  2. Выберите ваше устройство на левой панели.
  3. Нажмите маленькую стрелку, как показано на скриншоте ниже.

enter image description here

86 голосов
/ 09 ноября 2012
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 в файл делегата приложения, и он создаст файл журнала в каталоге документов приложения на iPhone, который регистрирует все события журнала консоли.Вам необходимо импортировать этот файл из iTunes, чтобы увидеть все события консоли.

Примечание. В файле .plist убедитесь, что Application supports iTunes file sharing существует и имеет значение YES, чтобы вы могли получить доступ через iTunes.

Чтобы получить файлы журналов: Запустите itunes, после того, как ваше устройство подключится, выберите «Приложения» - выберите приложение - в «Augument Document» вы получите свой файл.Затем вы можете сохранить его на свой диск

19 голосов
/ 19 января 2017

В 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

Просто добавьте этот блок кода в приложение: didFinishLaunchingWithOptions в файле делегата приложения, и он создает файл журнала в каталоге документов приложения на iPhone, который регистрирует все события журнала консоли.Вам нужно импортировать этот файл из iTunes, чтобы увидеть все события консоли.

Примечание. В файле .plist убедитесь, что Application supports iTunes file sharing существует и имеет значение YES, чтобы вы могли получить доступ через iTunes.

Чтобы получить файлы журналов: Запустите iTunes, после того как ваше устройство подключится, выберите «Приложения» - выберите приложение - в «Документе Augument» вы получите свой файл.Затем вы можете сохранить его на свой диск

11 голосов
/ 01 февраля 2012

NSLog записывается в журнал устройства в производственной версии, и вы можете проверить это, подключив ваш iPhone к вашей системе и используя Организатор. Выберите ваш iPhone в органайзере, нажмите «Журналы устройств». Вы увидите все результаты NSLog в журнале.

7 голосов
/ 10 апреля 2014

Я нашел эту ссылку из APPLE очень информативной и полной. Это в значительной степени дает вам все возможности для просмотра или доступа к журналам устройства, независимо от того, подключены они к вашей машине разработчика или нет.

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

2 голосов
/ 01 февраля 2012

Если вы используете Testflight SDK, вы можете захватывать все журналы с помощью функции Remote Logging .

2 голосов
/ 01 февраля 2012

Да, NSLog выводит на устройство. Вы можете видеть его результаты, когда ваше устройство подключено к вашему Mac и используется инструмент Xcode Organizer.

0 голосов
/ 27 апреля 2018

Я думаю, что в Xcode 9.3 экран журнала устройства был перемещен в новое место. Пожалуйста, перейдите по следующей ссылке.

Получение журналов устройства во время выполнения в Xcode

0 голосов
/ 22 января 2018

Я знаю, что это старая ветка, но вы также можете получить доступ к журналам устройств, которые будут идти по адресу:

Настройки -> Конфиденциальность -> Аналитика -> Данные

Надеюсь, что эта помощь

Привет

...