Files
purchases-ios/Tests/TestingApps/PurchaseTesterSwiftUI/Core/Logger.swift
T
NachoSoto dd2e161199 Purchase Tester: added button to clear messages on logger view (#2179)
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.

![Screenshot 2022-12-20 at 13 40
18](https://user-images.githubusercontent.com/685609/208772324-7433194b-2274-4d18-a64b-ad42fd30900e.png)
2022-12-21 08:19:09 -08:00

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 {}