75 lines
2.8 KiB
Swift
75 lines
2.8 KiB
Swift
//
|
||
// SimpleLogger.swift
|
||
// wallet
|
||
//
|
||
// Created by Francisco Gindre on 3/9/20.
|
||
// Copyright © 2020 Francisco Gindre. All rights reserved.
|
||
//
|
||
|
||
import Foundation
|
||
import ZcashLightClientKit
|
||
import os
|
||
|
||
class SimpleLogger: ZcashLightClientKit.Logger {
|
||
enum LogLevel: Int {
|
||
case debug
|
||
case error
|
||
case warning
|
||
case event
|
||
case info
|
||
}
|
||
|
||
enum LoggerType {
|
||
case osLog
|
||
case printerLog
|
||
}
|
||
|
||
var level: LogLevel
|
||
var loggerType: LoggerType
|
||
|
||
init(logLevel: LogLevel, type: LoggerType = .osLog) {
|
||
self.level = logLevel
|
||
self.loggerType = type
|
||
}
|
||
|
||
private static let subsystem = Bundle.main.bundleIdentifier!
|
||
static let oslog = OSLog(subsystem: subsystem, category: "logs")
|
||
|
||
func debug(_ message: String, file: String = #file, function: String = #function, line: Int = #line) {
|
||
guard level.rawValue == LogLevel.debug.rawValue else { return }
|
||
log(level: "DEBUG 🐞", message: message, file: file, function: function, line: line)
|
||
}
|
||
|
||
func error(_ message: String, file: String = #file, function: String = #function, line: Int = #line) {
|
||
guard level.rawValue <= LogLevel.error.rawValue else { return }
|
||
log(level: "ERROR 💥", message: message, file: file, function: function, line: line)
|
||
}
|
||
|
||
func warn(_ message: String, file: String = #file, function: String = #function, line: Int = #line) {
|
||
guard level.rawValue <= LogLevel.warning.rawValue else { return }
|
||
log(level: "WARNING ⚠️", message: message, file: file, function: function, line: line)
|
||
}
|
||
|
||
func event(_ message: String, file: String = #file, function: String = #function, line: Int = #line) {
|
||
guard level.rawValue <= LogLevel.event.rawValue else { return }
|
||
log(level: "EVENT ⏱", message: message, file: file, function: function, line: line)
|
||
}
|
||
|
||
func info(_ message: String, file: String = #file, function: String = #function, line: Int = #line) {
|
||
guard level.rawValue <= LogLevel.info.rawValue else { return }
|
||
log(level: "INFO ℹ️", message: message, file: file, function: function, line: line)
|
||
}
|
||
|
||
private func log(level: String, message: String, file: String, function: String, line: Int) {
|
||
let fileName = (file as NSString).lastPathComponent
|
||
switch loggerType {
|
||
case .printerLog:
|
||
print("[\(level)] \(fileName) - \(function) - line: \(line) -> \(message)")
|
||
default:
|
||
// os_log("[%@] %@ - %@ - Line: %d -> %@", log: Self.oslog, type: .debug, level, fileName, function, line, message)
|
||
os_log("[%{public}@] %{public}@ - %{public}@ - Line: %{public}d -> %{public}@", level, fileName, function, line, message)
|
||
}
|
||
}
|
||
|
||
}
|