С версии 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))
В мето дах
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?) }