Миграция на новую версию

Миграция с 0.1.42 до 0.1.43

С версии 0.1.43 подключение модулей Трейсера сопровождается конфигурацией, которая объединяет все настройки необходимого модуля:

.crashReporter(config: TracerCrashReporterConfiguration), .assertReporter(config: TracerAssertReporterConfiguration), .diskUsage(config: TracerDiskUsageConfiguration), .systrace(config: TracerSystraceConfiguration) .metricKit – подробнее в документации к модулю

Подробнее о MetricKit читайте здесь, минимальная версия iOS для использования модуля – iOS 14.

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

.crashReporter(config: TracerCrashReporterConfiguration()), .assertReporter(config: TracerAssertReporterConfiguration()), .diskUsage(config: TracerDiskUsageConfiguration()), .systrace(config: TracerSystraceConfiguration())

Кастомизировать определенные параметры возможно таким же образом:

.systrace(config: TracerSystraceConfiguration(probability: 100))

Миграция с 0.1.25 до 0.1.31

В методах

public enum TracerFactory { public static func tracerServiceForCrashReporting(token: String, delegate: TracerServiceDelegate? = nil, sysInfoProvider: TracerSystemInfoProviderProtocol? = nil, logger: TracerLoggerProtocol? = nil, isDebug: Bool = true) -> TracerServiceProtocol public static func tracerService(token: String, features: [FeatureConfiguration], items: [FeatureObject] = [], delegate: TracerServiceDelegate? = nil, sysInfoProvider: TracerSystemInfoProviderProtocol? = nil, logger: TracerLoggerProtocol? = nil, isDebug: Bool = true) -> TracerServiceProtocol }

Убирается параметр isDebug, теперь его не нужно передавать.

Новые сигнатуры выглядят так

public enum TracerFactory { public static func tracerServiceForCrashReporting(token: String, delegate: TracerServiceDelegate? = nil, sysInfoProvider: TracerSystemInfoProviderProtocol? = nil, logger: TracerLoggerProtocol? = nil, isDebug: Bool = true) -> TracerServiceProtocol public static func tracerService(token: String, features: [FeatureConfiguration], items: [FeatureObject] = [], delegate: TracerServiceDelegate? = nil, sysInfoProvider: TracerSystemInfoProviderProtocol? = nil, logger: TracerLoggerProtocol? = nil, isDebug: Bool = true) -> TracerServiceProtocol }

Добавлено внутреннее логирование, смотреть Configuration.logDestinations

public enum TracerLogDestination { public enum Constants { public static let defaultFormat = "$LEVEL $D[yyyy-MM-dd'T'HH:mm:ssZZZZZ] $M[255] $FILE:$LINE $FUNC $C" } // MARK: - Cases case console(format: String = Constants.defaultFormat, minLevel: TracerLogLevel = .debug) case file(format: String = Constants.defaultFormat, minLevel: TracerLogLevel = .warning) case oslog(format: String = Constants.defaultFormat, minLevel: TracerLogLevel = .debug) case buildin(format: String = Constants.defaultFormat, minLevel: TracerLogLevel = .debug) }

Описание формата (level, date+format, message, file, line, function, context)
$LEVEL - уровень
$D[format date]
$M[max length] - сообщение
$FILE - имя файла
$LINE - номер строки
$FUNC - название функции
$С - контекст

Также можно логировать свои события используя логирование Трейсера: TracerServiceProtocol.logger

public protocol TracerLoggerProtocol { func log<T>(level: TracerLogLevel, message: @autoclosure () -> T) func logAsync<T>(level: TracerLogLevel, message: @autoclosure () -> T) func log<T>(level: TracerLogLevel, message: @autoclosure () -> T, file: String?, function: String?, line: Int?, context: Any?) func logAsync<T>(level: TracerLogLevel, message: @autoclosure () -> T, file: String?, function: String?, line: Int?, context: Any?) }