import Combine import Foundation import SwiftUI let isConsoleLoggingEnabled = false #if DEBUG let prefixLength = 200 func loggerMiddleware() -> Middleware { { state, action in let timeStr = dateFormatter.string(from: Date()) var actionStr = "\(action)" actionStr = String(actionStr.prefix(prefixLength)) + " ..." var stateStr = "\(state)" stateStr = String(stateStr.prefix(prefixLength)) + " ..." let str = "\(timeStr) \u{EA86} \(actionStr)\n\(timeStr) \u{F129} \(stateStr)\n" print(str) if isConsoleLoggingEnabled { NSLog(str) } return Empty().eraseToAnyPublisher() } } #else func loggerMiddleware() -> Middleware { { _, _ in Empty().eraseToAnyPublisher() } } #endif enum LogLevels: String { case info = "\u{F449}" case warning = "\u{F071}" case error = "\u{EA76}" } // For database errors logging func logIt(_ level: LogLevels, _ message: String) { #if DEBUG let timeStr = dateFormatter.string(from: Date()) let str = "\(timeStr) \(level.rawValue) \(message)" print(str) if isConsoleLoggingEnabled { NSLog(str) } #endif } private var dateFormatter: DateFormatter { let formatter = DateFormatter() formatter.locale = NSLocale(localeIdentifier: "en_US_POSIX") as Locale formatter.dateFormat = "MM-dd HH:mm:ss.SSS" return formatter }