Swift:
Журналирование
Как:
В Swift вы можете писать логи в консоль с помощью операторов print или более гибкого API os.log
, который подключается к Единой Системе Логирования на платформах Apple.
import os.log
let logger = OSLog(subsystem: "com.yourapp.domain", category: "network")
func fetchData() {
// Простое выражение print
print("Начало получения данных")
// Логирование события уровня информации с использованием os.log
os_log(.info, log: logger, "Получение данных с API.")
do {
let data = try performNetworkRequest()
// Логирование события уровня отладки
os_log(.debug, log: logger, "Данные получены: %@", data.description)
} catch {
// Логирование события уровня ошибки
os_log(.error, log: logger, "Не удалось получить данные: %@", error.localizedDescription)
}
}
func performNetworkRequest() throws -> Data {
// Имитация сетевого запроса
return Data()
}
Пример вывода в консоль может выглядеть так:
Начало получения данных
Получение данных с API.
Данные получены: Некоторые байты данных...
Для ошибок это может быть:
Не удалось получить данные: Похоже, что нет интернет-соединения.
Подробнее
Логирование в Swift становится более мощным и эффективным с введением Единой Системы Логирования в iOS 10 и macOS Sierra. В отличие от оператора print
, который идет прямо в консоль, эта система основана на деятельности и позволяет фильтровать сообщения журнала на основе их важности и того, являются ли они сборками для отладки или выпуска.
Исторический контекст описывает эволюцию логирования в iOS и macOS от примитивных выражений print к комплексным инструментам, которые интегрируются с приложением Instruments и Консоль, предоставляя сложные способы анализа журналов.
Существует ряд альтернатив логированию в Swift, таких как сторонние библиотеки, например, CocoaLumberjack, которая предлагает макрослой над Единой Системой Логирования. Это обеспечивает расширенный контроль над форматированием логов, управлением файлами и параметрами производительности.
Наконец, детали реализации; OSLog разработан не только для эффективности, но и с учетом конфиденциальности, с возможностью скрытия личных данных при логировании. Он категоризует логи по уровням fault, error, info и debug, каждый из которых предлагает разную детализацию для устранения неполадок.