diff --git a/Sources/NextcloudKit/Log/NKLog.swift b/Sources/NextcloudKit/Log/NKLog.swift index 2dc8832c..ce8799a2 100644 --- a/Sources/NextcloudKit/Log/NKLog.swift +++ b/Sources/NextcloudKit/Log/NKLog.swift @@ -8,43 +8,43 @@ import Foundation // These functions internally use `NKLogFileManager.shared`. @inlinable -public func nkLog(debug message: String) { - NKLogFileManager.shared.writeLog(debug: message) +public func nkLog(debug message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(debug: message, minimumLogLevel: minimumLogLevel) } @inlinable -public func nkLog(info message: String) { - NKLogFileManager.shared.writeLog(info: message) +public func nkLog(info message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(info: message, minimumLogLevel: minimumLogLevel) } @inlinable -public func nkLog(warning message: String) { - NKLogFileManager.shared.writeLog(warning: message) +public func nkLog(warning message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(warning: message, minimumLogLevel: minimumLogLevel) } @inlinable -public func nkLog(error message: String) { - NKLogFileManager.shared.writeLog(error: message) +public func nkLog(error message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(error: message, minimumLogLevel: minimumLogLevel) } @inlinable -public func nkLog(success message: String) { - NKLogFileManager.shared.writeLog(success: message) +public func nkLog(success message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(success: message, minimumLogLevel: minimumLogLevel) } @inlinable -public func nkLog(network message: String) { - NKLogFileManager.shared.writeLog(network: message) +public func nkLog(network message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(network: message, minimumLogLevel: minimumLogLevel) } @inlinable -public func nkLog(start message: String) { - NKLogFileManager.shared.writeLog(start: message) +public func nkLog(start message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(start: message, minimumLogLevel: minimumLogLevel) } @inlinable -public func nkLog(stop message: String) { - NKLogFileManager.shared.writeLog(stop: message) +public func nkLog(stop message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(stop: message, minimumLogLevel: minimumLogLevel) } /// Logs a custom tagged message. @@ -53,6 +53,6 @@ public func nkLog(stop message: String) { /// - emoji: the type tag .info, .debug, .warning, .error, .success .. /// - message: The message to log. @inlinable -public func nkLog(tag: String, emoji: NKLogTagEmoji = .debug, message: String) { - NKLogFileManager.shared.writeLog(tag: tag, emoji: emoji, message: message) +public func nkLog(tag: String, emoji: NKLogTagEmoji = .debug, message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(tag: tag, emoji: emoji, message: message, minimumLogLevel: minimumLogLevel) } diff --git a/Sources/NextcloudKit/Log/NKLogFileManager.swift b/Sources/NextcloudKit/Log/NKLogFileManager.swift index 70c83f6f..e409fee9 100644 --- a/Sources/NextcloudKit/Log/NKLogFileManager.swift +++ b/Sources/NextcloudKit/Log/NKLogFileManager.swift @@ -150,36 +150,36 @@ public final class NKLogFileManager: @unchecked Sendable { // MARK: - Public API - public func writeLog(debug message: String) { - writeLog("[DEBUG] \(message)") + public func writeLog(debug message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[DEBUG] \(message)", minimumLogLevel: minimumLogLevel) } - public func writeLog(info message: String) { - writeLog("[INFO] \(message)") + public func writeLog(info message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[INFO] \(message)", minimumLogLevel: minimumLogLevel) } - public func writeLog(warning message: String) { - writeLog("[WARNING] \(message)") + public func writeLog(warning message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[WARNING] \(message)", minimumLogLevel: minimumLogLevel) } - public func writeLog(error message: String) { - writeLog("[ERROR] \(message)") + public func writeLog(error message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[ERROR] \(message)", minimumLogLevel: minimumLogLevel) } - public func writeLog(success message: String) { - writeLog("[SUCCESS] \(message)") + public func writeLog(success message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[SUCCESS] \(message)", minimumLogLevel: minimumLogLevel) } - public func writeLog(network message: String) { - writeLog("[NETWORK] \(message)") + public func writeLog(network message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[NETWORK] \(message)", minimumLogLevel: minimumLogLevel) } - public func writeLog(start message: String) { - writeLog("[START] \(message)") + public func writeLog(start message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[START] \(message)", minimumLogLevel: minimumLogLevel) } - public func writeLog(stop message: String) { - writeLog("[STOP] \(message)") + public func writeLog(stop message: String, minimumLogLevel: NKLogLevel = .compact) { + writeLog("[STOP] \(message)", minimumLogLevel: minimumLogLevel) } /// Writes a tagged log message with a specific log level. @@ -187,11 +187,11 @@ public final class NKLogFileManager: @unchecked Sendable { /// - tag: A custom tag to classify the log message (e.g. "SYNC", "AUTH"). /// - emoji: .info, .debug, .warning, .error, .success .. /// - message: The log message content. - public func writeLog(tag: String, emoji: NKLogTagEmoji, message: String) { + public func writeLog(tag: String, emoji: NKLogTagEmoji, message: String, minimumLogLevel: NKLogLevel = .compact) { guard !tag.isEmpty else { return } let taggedMessage = "[\(tag.uppercased())] \(message)" - writeLog(taggedMessage, emoji: emoji) + writeLog(taggedMessage, emoji: emoji, minimumLogLevel: minimumLogLevel) } /// Writes a log message with an optional typeTag to determine console emoji. @@ -201,8 +201,14 @@ public final class NKLogFileManager: @unchecked Sendable { /// - Parameters: /// - message: The log message to record. /// - emoji: Optional type to determine console emoji (e.g. [INFO], [ERROR]). - public func writeLog(_ message: String?, emoji: NKLogTagEmoji? = nil) { - guard logLevel != .disabled, let message = message else { return } + public func writeLog(_ message: String?, emoji: NKLogTagEmoji? = nil, minimumLogLevel: NKLogLevel = .compact) { + guard logLevel != .disabled, + let message = message else { + return + } + if minimumLogLevel > logLevel { + return + } let fileTimestamp = Self.stableTimestampString() let consoleTimestamp = Self.localizedTimestampString() diff --git a/Sources/NextcloudKit/NextcloudKit.swift b/Sources/NextcloudKit/NextcloudKit.swift index 4d0337ee..8b06882e 100644 --- a/Sources/NextcloudKit/NextcloudKit.swift +++ b/Sources/NextcloudKit/NextcloudKit.swift @@ -22,8 +22,8 @@ open class NextcloudKit { #endif public var nkCommonInstance = NKCommon() - internal func log(debug message: String) { - NKLogFileManager.shared.writeLog(debug: message) + internal func log(debug message: String, minimumLogLevel: NKLogLevel = .compact) { + NKLogFileManager.shared.writeLog(debug: message, minimumLogLevel: minimumLogLevel) } internal lazy var unauthorizedSession: Alamofire.Session = {