import OSLog struct AppLogger { private let logger: Logger private let subsystem: String private let category: String init(subsystem: String, category: String) { self.subsystem = subsystem self.category = category self.logger = Logger(subsystem: subsystem, category: category) } func timestamp () -> String { Date.now.formatDateET(format: "yyyy-MM-dd HH:mm:ss") } func formattedMessage (_ message: String) -> String { "\(timestamp()) [\(subsystem):\(category)] \(message)" } func debug(_ message: String) { logger.debug("\(formattedMessage(message))") } func info(_ message: String) { logger.info("\(formattedMessage(message))") } func warning(_ message: String) { logger.warning("\(formattedMessage(message))") } func error(_ message: String) { logger.error("\(formattedMessage(message))") } }