Рекомендуемый подход к журналу Apple для Swift

Заметка:

Это не дубликат связанных вопросов

Цель:

  • Я не ищу различия в print и NSLog
  • На самом деле я не хочу использовать ни один из них (в настоящее время использую print)
  • Я ищу рекомендуемый для Apple способ, просто не могу найти команду/документацию, я просто знаю, что она существует.

Текущая реализация:

В настоящее время я использую операторы print с некоторыми глобальными функциями

Вопрос

  1. Каков рекомендуемый способ/подход к обработке ошибок (я не хочу использовать NSLog, поскольку они будут записывать в консоль устройства)
  2. Это только для целей отладки во время разработки

Ответ 1

Посмотрите на os_log. Он предлагает все, что вы ищете.

Отказ от ответственности:

Я настоятельно рекомендую вам посмотреть эту ветку на форумах Swift. ТЛ; др

Несмотря на то, что это "рекомендация Apple", ее использование обсуждается из-за проблем с получением журналов:

  • получение журналов не является тривиальным процессом. Это на самом деле сложно. Смотрите здесь
  • Для большинства пользователей лог файл может быть 100-300 Мб. Что затрудняет отправку.

Он отлично подходит для отладки во время разработки, но трудоемок для запуска, извлечения, отправки пользователями вашего приложения.


Пример:

let customLog = OSLog(subsystem: "com.your_company.your_subsystem_name", category: "Category")
os_log("This is info that may be helpful during development or debugging.", log: customLog, type: .debug)

Несколько замечательных ссылок:

  • WWDC 2016 Unified Logging и Tracing.
  • Этот ответ Роба. Он говорит, что NSLog устарела, и некоторые преимущества использования новой библиотеки os_log.
  • Вы также можете получить журналы, используя подход, упомянутый здесь. Убедитесь, что вы видите ? ответы.

Причина, по которой os_log так силен, заключается в следующем:

  • предлагает различные уровни журнала
  • имеет разные категории
  • Журналы private и public
  • это легкий и построен Apple. Не требует стручков
  • В отличие от print, который доступен только во время отладки, os_log можно использовать для просмотра выпущенного приложения (в реальном времени) и просмотра журналов в консольном приложении.

enter image description here

Это отлично подходит для наблюдения за изменениями жизненного цикла приложения без жадного Xcode. Xcode не позволяет переводить приложение в приостановленное состояние...


Примечание: os_log доступен только для +iOS10

Также есть новые видео с WWDC 2018 и 2019, но они более сфокусированы на os_signpost. См: