jsdw_ios/Pods/CocoaMQTT/Source/CocoaMQTTLogger.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)
}
}