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