72 lines
1.7 KiB
Swift
72 lines
1.7 KiB
Swift
//
|
|
// CocoaMQTTLogger.swift
|
|
// CocoaMQTT
|
|
//
|
|
// Created by HJianBo on 2019/5/2.
|
|
// Copyright © 2019 emqx.io. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
// Convenience functions
|
|
func printDebug(_ message: String) {
|
|
CocoaMQTTLogger.logger.debug(message)
|
|
}
|
|
|
|
func printInfo(_ message: String) {
|
|
CocoaMQTTLogger.logger.info(message)
|
|
}
|
|
|
|
func printWarning(_ message: String) {
|
|
CocoaMQTTLogger.logger.warning(message)
|
|
}
|
|
|
|
func printError(_ message: String) {
|
|
CocoaMQTTLogger.logger.error(message)
|
|
}
|
|
|
|
// Enum log levels
|
|
public enum CocoaMQTTLoggerLevel: Int {
|
|
case debug = 0, info, warning, error, off
|
|
}
|
|
|
|
open class CocoaMQTTLogger: NSObject {
|
|
|
|
// Singleton
|
|
// Keep mutable global logger for backward compatibility.
|
|
// Accesses are intentionally marked as unsafe-isolated for Swift 6 readiness.
|
|
#if swift(>=6)
|
|
public nonisolated(unsafe) static var logger = CocoaMQTTLogger()
|
|
#else
|
|
public static var logger = CocoaMQTTLogger()
|
|
#endif
|
|
public override init() { super.init() }
|
|
|
|
// min level
|
|
@ConcurrentAtomic(wrappedValue: .warning, label: "CocoaMQTTLogger.minLevel")
|
|
public var minLevel: CocoaMQTTLoggerLevel
|
|
|
|
// logs
|
|
open func log(level: CocoaMQTTLoggerLevel, message: String) {
|
|
guard level.rawValue >= minLevel.rawValue else { return }
|
|
print("CocoaMQTT(\(level)): \(message)")
|
|
}
|
|
|
|
func debug(_ message: String) {
|
|
log(level: .debug, message: message)
|
|
}
|
|
|
|
func info(_ message: String) {
|
|
log(level: .info, message: message)
|
|
}
|
|
|
|
func warning(_ message: String) {
|
|
log(level: .warning, message: message)
|
|
}
|
|
|
|
func error(_ message: String) {
|
|
log(level: .error, message: message)
|
|
}
|
|
|
|
}
|