56 lines
1.5 KiB
Swift
56 lines
1.5 KiB
Swift
import Combine
|
||
import Foundation
|
||
|
||
let isConsoleLoggingEnabled = false
|
||
|
||
#if DEBUG
|
||
let prefixLength = 2000
|
||
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) ➡️ \(actionStr)\n\(timeStr) ✅ \(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 = "ℹ️"
|
||
case warning = "⚠️"
|
||
case error = "❌"
|
||
}
|
||
|
||
// 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
|
||
}
|