Регистрация данных на устройстве и получение журнала
на отладочной сборке в Xcode, независимо от того, использую ли я симулятор или фактическое устройство, операторы NSLog, printf, fprintf assert и NSAssert выходят на консоль
Если я сейчас запускаю сборку выпуска на устройстве (скажем, я отправляю сборку тестового полета и увеличиваю ее на своем iPhone; это будет сборка выпуска), какие из них (если таковые имеются) записываются?
и как мне получить журнал?
действительно ли NSLog выводит что-то на релизе строить? Что является определяющим фактором? Является ли это запись в stdout или stderr? только stderr записывается в журнал устройств? Значит ли это, что я должен использовать fprintf? Что-нибудь записано в журнал устройств? есть ли вообще такая вещь? Если да, то как его забрать?
может кто прояснит ситуацию?
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, выполнив следующие действия. Однако я не уверен, что это позволяет вам видеть журналы слишком далеко назад во времени. Я только видел, как он вернулся на пару часов.
в любом случае, вот несколько шагов:
- в Xcode, перейдите в окно -> устройства.
- выберите устройство на левой панели.
- нажмите на маленькую стрелку как показано на скриншоте ниже.
в 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, вы можете захватить все журналы с их функция удаленного ведения журнала.
Я знаю, что это старый поток, но вы также можете иметь доступ к журналам устройств собирается:
Настройки -> Конфиденциальность -> Аналитика -> Сведения
надеюсь, что это поможет
в отношении