2013-07-13 2 views
3

Как хорошо, как отладчики получили эти дни, иногда лучший способ узнать, что происходит в приложении, все равно вы стареете NSLog. Это легко сделать, когда вы привязаны к компьютеру; Xcode помогает всплывать панель Log Viewer и там вы идете. Не так просто сделать, когда вы находитесь далеко от своего стола, как это иногда бывает при тестировании приложения (например, когда вы тестируете функциональность CoreLocation). Конечно, вы можете открыть Xcode и проверить раздел Консоль организатора устройств, как только вы вернетесь из тестового прогона, но тогда вам нужно подождать, и к тому моменту, когда вы сможете вернуться к просмотру журналов, вы забыли, что происходит неправильно с вашим приложением; Кроме того, шансы на то, что к тому моменту, когда вы сможете это сделать, сообщения журнала, которые вы ищете, зашли в небытие.(iOS) Способ просмотра сообщений журнала непосредственно на устройстве iOS?

Есть ли способ проверить журналы консоли на самом устройстве? Я предполагаю, что ответ «нет, если вы не джейлбрейк» (у IIRC есть, по крайней мере, одно или два терминальных приложения на джейлбрейке, которые я мог бы использовать для такого рода вещей). К сожалению, джейлбрейкинг для меня не вариант.

В качестве альтернативы, существует какой-то объект Objective-C framework или library или whatnot, который обрабатывает сбор журналов и отображение на устройстве? В идеале это произойдет в виде замены на замену NSLog, в результате чего я могу просто выполнить поиск и замену и изменить все вхождения NSLog на SomeFancyPantsLoggingTool или что-то еще и сделать с ним.

Хороший пример того, какую функциональность я ищу, можно найти в клиенте подкаста Downcast. Если вы нажмете на вкладке «Дополнительно», а затем нажмите на строку номера версии внизу экрана, откроется новое представление, содержащее прокручиваемое представление накопленных сообщений журнала. У него даже есть простой способ рассылки указанных журналов на адрес электронной почты поддержки.

+0

Вы не замените olde 'NSLog()'. Вместо этого вы должны подключиться к системному логику. 'man syslog' и' man syslogd' являются вашими друзьями, а также пытайтесь подключиться к 'lockdownd' и вывести из него syslog (это частный API, хотя, поэтому' # ifdef' он перед отправкой в ​​AppStore.) –

+0

Обычно я использую свой собственный регистратор. У меня есть набор определений, которые работают с NSLog и моими собственными параметрами. Поскольку я хочу иметь свои собственные журналы в отдельных файлах (в день), я просто перенаправляю все журналы на вновь созданный файл, вызывая «freopen» с помощью «stderr» freopen ([pathToFile UTF8String], «a», stderr). Затем я могу отправить эти журналы себе, когда у пользователя возникла проблема, и нажимает кнопку «Поддержка контактов». – krzyspmac

ответ

0

Посмотрите на LibComponentLogging, который вы можете настроить для ведения журнала на разных уровнях и в разных пунктах назначения.

0

Существует файл для SysLog. Вы можете просто открыть его и прочитать из него. Файл находится в/var/log/syslog. Если файл не существует, есть инструкции по его настройке here.

Смежные вопросы