Подтвердить что ты не робот

Унифицированный журнал: сообщения об ошибках в приложениях/отладки никогда не отображаются в файле Logarchive

При развертывании приложения на моем устройстве iOS, запуская коллекцию журналов через sysdiagnose, а затем изучая сообщения журнала в system_logs.logarchive полученные из синхронизации iTunes, мое приложение никогда не показывало тип сообщений Info/Debug log.

Обратите внимание, что этот вопрос отличается от существующих, но похожих вопросов, таких как:

Я использую образец кода компании Paper Company (Swift) от Apple, чтобы проиллюстрировать мою проблему. Я начинаю развертывать приложение на своем устройстве iOS под управлением iOS 11.0.3 as-is. Схема использует режим отладки. В моем случае:

  • У меня всегда есть "Включить информационные сообщения" и "Включить отладочные сообщения" на консоли.
  • Когда я транслирую свои сообщения в журнале, пока приложение работает с привязкой к Xcode, я продолжаю видеть все сообщения журнала, включая типы информации и отладки на консоли.
  • Однако, когда я запускаю сбор журналов через sysdiagnose и logarchive файл logarchive с помощью Console, я никогда не вижу свои сообщения Info и Debug. Другие типы сообщений, "По умолчанию", "Ошибка и ошибка" продолжают отображаться, например, когда я живу.
    • Тем не менее, я все еще вижу сообщения Info и Debug, относящиеся к другим системным процессам, но не мои приложения.

Live Stream. Info / Debug are ShownLive Stream. Activity Tracing WorkingLogarchive. No Info / Debug for my AppLogarchive. No Activity TracingLogarchive. Info / Debug Shown for other Processes

Из-за такого загадочного поведения я начал думать, что это может иметь отношение к конфигурации системы. В документации регистрации:

Сообщения информационного уровня изначально хранятся в буферах памяти. Без изменения конфигурации они не перемещаются в хранилище данных и очищаются по мере заполнения буферов памяти. Тем не менее, они сохраняются в хранилище данных, когда возникают сбои и, при необходимости, ошибки. Когда сообщения информационного уровня добавляются в хранилище данных, они остаются там до тех пор, пока не будет превышена квота хранилища, и в этот момент будут удалены самые старые сообщения. Используйте этот уровень для сбора информации, которая может быть полезной, но не обязательно для устранения неполадок.

Прочитав это, я также попытался изменить тип ошибки на тип 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 от других процессов.
4b9b3361

Ответ 1

У меня была похожая проблема, когда я думал, что мои журналы не выполняются (даже если они отображались нормально в режиме реального времени при подключении к устройству), но это было потому, что я просматривал только отчеты за последние 5 минут. Попробуйте изменить параметр Showing: в консоли и посмотрите, сможете ли вы найти операторы таким образом.

enter image description here