FusionAds-iOS/FusionAds/Classes/fusion/utils/log/Logger.swift

70 lines
2.1 KiB
Swift

// 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)
}
}
}