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, каждый из которых предлагает разную детализацию для устранения неполадок.

См. также