58 lines
1.5 KiB
Swift
58 lines
1.5 KiB
Swift
import Combine
|
|
import Foundation
|
|
import SwiftUI
|
|
|
|
let isConsoleLoggingEnabled = false
|
|
|
|
#if DEBUG
|
|
let prefixLength = 200
|
|
func loggerMiddleware() -> Middleware<AppState, AppAction> {
|
|
{ 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<AppState, AppAction> {
|
|
{ _, _ 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
|
|
}
|