Гибридный регистратор, который входит в систему с Oslog и в файл в Apple SystemsIOS

Программируем под IOS
Ответить
Anonymous
 Гибридный регистратор, который входит в систему с Oslog и в файл в Apple Systems

Сообщение Anonymous »

Apple рекомендует использовать oslog `logger. Это продвигается на WWDC AL MADENT с 2020 года (например, см. WWDC 2023 SESSION 10226 DENAUG со структурированным журналом).
Предполагается, что он должен быть супер эффективным и т. Д. p>

IOS имеет очень ограниченные средства для чтения журнала системы. В настоящее время
Приложение для iOS может считывать только записи, созданные этим конкретным процессом,
с использованием области .currentProcessIdentifier. Это раздражает, если, скажем, приложение
рухнуло, и вы хотите знать, что оно делало до сбоя. br />57880434).
< /blockquote>
Источник: ваш друг, журнал системы < /p>
, чтобы позволить пользователям отправлять журналы для Определенный период даже в случае сбоев я не смог найти лучшее решение, кроме как дублировать регистрацию в набор файлов с вращением. Если бы Logger имел какой -то делегат, который выглядел бы как лучший вариант, чтобы сделать дополнительную работу в правильное время, но, к сожалению, это не так.
Для совместимости я решил Создайте регистратор, который имеет точно одинаковые подписи функции, что и System One One OSLOG logger .
Поскольку logger - это struct Я не могу унаследовать его и переопределять его функции для ведения журнала файлов вместе с унаследованным системным журналом. С их подписями, подобными этим: < /p>

Код: Выделить всё

    public func error(_ message: OSLogMessage) {
osLogger.error("\(message.description)")
fileLogger.log(level: .error, message.description)
}
< /code>
Есть только несколько методов для повторного введения, например (debug
, bull и аналогично).
Но я наткнулся на ограничение, которое кажется намеренным. («Не удалось конфигурация: \ (res, privacy: .public)») , я получаю ошибку: « string interpolation не может быть использована в этом контексте; если вы вызовыте функцию OS_LOG , Попробуйте другую перегрузку. Вы не создаете экземпляры Oslogmessage напрямую. Вместо этого система
создает их для вас при написании сообщений в Unified
систему ведения журнала с использованием журнала. Форум: < /p>

API -интерфейсы журнала используют специальные функции компилятора для оценки уровня конфиденциальности
во время компиляции. Как говорится в диагностике, вы должны использовать статический
(и.e., известный во время компиляции) или свойство «Ослогприв»; Это
не может быть переменной, которая оценивается во время выполнения. Подразумевается
, что вы не можете создать свою собственную обертку для этих API без использования
Compiler-Internal. : Итак, вопрос: каковы варианты выполнения задачи постоянного ведения журнала, сохраняя при этом преимущества Apple «структурированная регистрация».


Подробнее здесь: https://stackoverflow.com/questions/793 ... le-systems
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»