Регистрация данных на устройстве и получение журнала


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

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

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

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

может кто прояснит ситуацию?

9 61

9 ответов:

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 is существует и имеет значение YES Так что вы можете получить доступ через iTunes.

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

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

в любом случае, вот несколько шагов:

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

enter image description here

в 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 файл убедитесь, что и YES Так что вы можете получить доступ к через iTunes.

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

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

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

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

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

Если вы используете TestFlight SDK, вы можете захватить все журналы с их функция удаленного ведения журнала.

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

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

надеюсь, что это поможет

в отношении

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

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