Чтение журналов с использованием нового swift os_log api
Устаревший в iOS 10.0: os_log (3) заменил asl (3)
Итак, iOS 10.0, по-видимому, обесценивает apl (системный журнал Apple) api и заменяет его очень ограниченным os_log api.
Я использую что-то похожее на фрагмент кода ниже, чтобы читать записи журнала для запускающего приложения, которое будет отображаться в приложении uitextview в приложении, - и теперь оно полно предупреждений об устаревании. Кто-нибудь знает, как читать распечатанный журнал, используя новый os_log api? Потому что я вижу только api для записи (https://developer.apple.com/reference/os/1891852-logging).
import asl
let query = asl_new(UInt32(ASL_TYPE_QUERY))
let response = asl_search(nil, query)
while let message = asl_next(response) {
var i: UInt32 = 0
let key = asl_key(message, i)
print(asl_get(message, key))
...
}
Изменить после ответа @Wew Loew-Blosser
https://developer.apple.com/videos/play/wwdc2016/721/ прекрасно объяснил, что произойдет с входом в систему в будущем. Самой большой суммой было то, что журналы помещаются в сжатый формат и расширяются только новым консольным приложением. Который в значительной степени делает мою миссию безнадежной.
Парень (Стив Шимански) в видео упоминает, что "Все API-протоколы ASL перегружены новыми API-интерфейсами", а "Новые API-интерфейсы для поиска новых данных журнала не будут опубликованы в этом выпуске" aka asl_search
. И это было именно то, что я искал!
Также он упоминает, что скоро появится API API.
Ответы
Ответ 1
Похоже, вам нужно использовать расширенную консоль вместо своего собственного средства просмотра журналов. Журналы сжимаются и не разворачиваются до тех пор, пока не будут просмотрены - это делает запись гораздо менее интрузивной на уровнях отладки. Однако нет текстовой формы журналов.
См. видео-сеанс WWDC 2016 721 "Унифицированный журнал и отслеживание активности" https://developer.apple.com/videos/play/wwdc2016/721/
Также пример приложения Apple, демонстрирующий новый подход, имеет недокументированную настройку сборки, которую я должен был добавить в мое приложение для iOS. См. Настройку в приложении IOS "Бумажная компания (Swift)".
Этот параметр находится в разделе "Цели" окна верхнего уровня xCode. Это следующие шаги, которые я выполнил:
Отладка = без потерь
Release = respect-asset-catalog
После добавления этой настройки сборки, работа с журналом работала в моем приложении в соответствии с демонстрацией видеосеанса.