mirror of
https://github.com/RevenueCat/purchases-ios
synced 2026-11-11 22:55:55 +05:45
See #2012. This is useful when debugging some feature. You can now clear the logs before performing whatever action you need to test, and have a cleaner output with only the logs from that point. 
48 lines
896 B
Swift
48 lines
896 B
Swift
//
|
|
// Logger.swift
|
|
// PurchaseTester
|
|
//
|
|
// Created by Nacho Soto on 10/28/22.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
import RevenueCat
|
|
|
|
public final class Logger: ObservableObject {
|
|
|
|
public struct Entry {
|
|
public var level: LogLevel
|
|
public var message: String
|
|
public var id: UUID = .init()
|
|
}
|
|
|
|
@Published
|
|
@MainActor
|
|
public private(set) var messages: [Entry] = []
|
|
|
|
@MainActor
|
|
public func clearMessages() {
|
|
self.messages.removeAll(keepingCapacity: false)
|
|
}
|
|
|
|
public init() {}
|
|
|
|
}
|
|
|
|
extension Logger {
|
|
|
|
public var logHandler: (LogLevel, String) -> Void {
|
|
return { level, message in
|
|
DispatchQueue.main.async {
|
|
self.messages.append(.init(level: level, message: message))
|
|
}
|
|
|
|
NSLog("\(level.description): \(message)")
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
extension Logger.Entry: Equatable, Identifiable {}
|