При развертывании приложения на моем устройстве iOS, запуская коллекцию журналов через sysdiagnose, а затем изучая сообщения журнала в system_logs.logarchive
полученные из синхронизации iTunes, мое приложение никогда не показывало тип сообщений Info/Debug log.
Обратите внимание, что этот вопрос отличается от существующих, но похожих вопросов, таких как:
- Как установить уровень журнала на iOS 10?
- Журналы Xcode 8 - os_log_debug и os_log_info не отображаются на новой консоли Mac (унифицированное ведение журнала).
Я использую образец кода компании Paper Company (Swift) от Apple, чтобы проиллюстрировать мою проблему. Я начинаю развертывать приложение на своем устройстве iOS под управлением iOS 11.0.3 as-is. Схема использует режим отладки. В моем случае:
- У меня всегда есть "Включить информационные сообщения" и "Включить отладочные сообщения" на консоли.
- Когда я транслирую свои сообщения в журнале, пока приложение работает с привязкой к Xcode, я продолжаю видеть все сообщения журнала, включая типы информации и отладки на консоли.
- Однако, когда я запускаю сбор журналов через sysdiagnose и
logarchive
файлlogarchive
с помощью Console, я никогда не вижу свои сообщения Info и Debug. Другие типы сообщений, "По умолчанию", "Ошибка и ошибка" продолжают отображаться, например, когда я живу.- Тем не менее, я все еще вижу сообщения Info и Debug, относящиеся к другим системным процессам, но не мои приложения.
Из-за такого загадочного поведения я начал думать, что это может иметь отношение к конфигурации системы. В документации регистрации:
Сообщения информационного уровня изначально хранятся в буферах памяти. Без изменения конфигурации они не перемещаются в хранилище данных и очищаются по мере заполнения буферов памяти. Тем не менее, они сохраняются в хранилище данных, когда возникают сбои и, при необходимости, ошибки. Когда сообщения информационного уровня добавляются в хранилище данных, они остаются там до тех пор, пока не будет превышена квота хранилища, и в этот момент будут удалены самые старые сообщения. Используйте этот уровень для сбора информации, которая может быть полезной, но не обязательно для устранения неполадок.
Прочитав это, я также попытался изменить тип ошибки на тип Fault, просто для проверки того, что сообщения типа Info появятся.
os_log("B-b-b-b-b-b-b-bomb 💣!", log: ViewController.ui_log, type: .fault) // previously .error
Тем не менее, я до сих пор не вижу сообщений журнала Info в файле logarchive
.
Мои вопросы:
- Я пропустил что-то, что мне нужно, чтобы сделать поведение журнала для sysdiagnose совпадающим с выходом консоли, которое я вижу при потоковой трансляции? Обратите внимание, что Paper Company (Swift) уже использует
ASSETCATALOG_COMPRESSION
сборкиASSETCATALOG_COMPRESSION
, как было указано, что важно сделать работуos_log
. См. Раздел Чтение журналов с использованием новой быстрой os_log api - Это проблема с профилем конфигурации? Чтобы видеть сообщения Info/Debug из
logarchive
, действительно ли нужно добавить настраиваемый профиль, как показано в документе " Документы яблок" и этот пример mobleconfig? Однако кажется подозрительным, учитывая, что даже с помощью типа Fault сообщения Info все равно не регистрируются и что я все еще вижу сообщения Info/Debug от других процессов.