// Logger.swift // Utility class for logging // Provides similar functionality to Android's Logger import Foundation public class Logger { public enum LogLevel: Int { case verbose = 0 case debug = 1 case info = 2 case warn = 3 case error = 4 case none = 5 } private static let fileLogger = FileLogHandler( directory: "guru_app", filename: "fusion-ads.log", rotationConfig: FileLogHandler.RotationConfig(maxFileSize: 5 * 1024 * 1024, maxBackupCount: 2), minimumLogLevel: .verbose ) private static var logLevel: LogLevel = .info public static func setLogLevel(_ level: LogLevel) { logLevel = level } // Verbose log public static func v(tag: String, message: String) { if logLevel.rawValue <= LogLevel.verbose.rawValue { print("V/\(tag): \(message)") fileLogger.log(tag, message, level: FileLogHandler.LogLevel.verbose) } } // Debug log public static func d(tag: String, message: String) { if logLevel.rawValue <= LogLevel.debug.rawValue { print("D/\(tag): \(message)") fileLogger.log(tag, message, level: FileLogHandler.LogLevel.debug) } } // Info log public static func i(tag: String, message: String) { if logLevel.rawValue <= LogLevel.info.rawValue { print("I/\(tag): \(message)") fileLogger.log(tag, message, level: FileLogHandler.LogLevel.info) } } // Warning log public static func w(tag: String, message: String) { if logLevel.rawValue <= LogLevel.warn.rawValue { print("W/\(tag): \(message)") fileLogger.log(tag, message, level: FileLogHandler.LogLevel.warning) } } // Error log public static func e(tag: String, message: String) { if logLevel.rawValue <= LogLevel.error.rawValue { print("E/\(tag): \(message)") fileLogger.log(tag, message, level: FileLogHandler.LogLevel.error) } } }