diff --git a/Sources/Helpers/Logger/OSLogSupabaseLogger.swift b/Sources/Helpers/Logger/OSLogSupabaseLogger.swift new file mode 100644 index 00000000..8b9233cf --- /dev/null +++ b/Sources/Helpers/Logger/OSLogSupabaseLogger.swift @@ -0,0 +1,54 @@ +import Foundation + +#if canImport(OSLog) + import OSLog + + /// A SupabaseLogger implementation that logs to OSLog. + /// + /// This logger maps Supabase log levels to appropriate OSLog levels: + /// - `.verbose` → `.info` + /// - `.debug` → `.debug` + /// - `.warning` → `.notice` + /// - `.error` → `.error` + /// + /// ## Usage + /// + /// ```swift + /// let supabaseLogger = OSLogSupabaseLogger() + /// + /// // Use with Supabase client + /// let supabase = SupabaseClient( + /// supabaseURL: url, + /// supabaseKey: key, + /// options: .init(global: .init(logger: supabaseLogger)) + /// ) + /// ``` + @available(macOS 11.0, iOS 14.0, tvOS 14.0, watchOS 7.0, *) + public struct OSLogSupabaseLogger: SupabaseLogger { + private let logger: Logger + + /// Creates a new OSLog-based logger with a provided Logger instance. + /// + /// - Parameter logger: The OSLog Logger instance to use for logging. + public init( + _ logger: Logger = Logger(subsystem: Bundle.main.bundleIdentifier ?? "", category: "Supabase") + ) { + self.logger = logger + } + + public func log(message: SupabaseLogMessage) { + let logMessage = message.description + + switch message.level { + case .verbose: + logger.info("\(logMessage, privacy: .public)") + case .debug: + logger.debug("\(logMessage, privacy: .public)") + case .warning: + logger.notice("\(logMessage, privacy: .public)") + case .error: + logger.error("\(logMessage, privacy: .public)") + } + } + } +#endif diff --git a/Sources/Helpers/SupabaseLogger.swift b/Sources/Helpers/Logger/SupabaseLogger.swift similarity index 99% rename from Sources/Helpers/SupabaseLogger.swift rename to Sources/Helpers/Logger/SupabaseLogger.swift index 313b5a92..d5732c01 100644 --- a/Sources/Helpers/SupabaseLogger.swift +++ b/Sources/Helpers/Logger/SupabaseLogger.swift @@ -214,3 +214,4 @@ extension SupabaseLogger { } } #endif +