Чтение журналов с использованием нового 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. Это следующие шаги, которые я выполнил:

  • На странице "Параметры сборки" добавьте в "User-Defined" новый раздел = ASSETCATALOG_COMPRESSION.

  • Под ним добавить две строки:

Отладка = без потерь

Release = respect-asset-catalog

После добавления этой настройки сборки, работа с журналом работала в моем приложении в соответствии с демонстрацией видеосеанса.