diff --git a/14th-team5-iOS/Core/Sources/Bibbi/BBNetwork/Network/BBNetworkEventMonitor.swift b/14th-team5-iOS/Core/Sources/Bibbi/BBNetwork/Network/BBNetworkEventMonitor.swift index b1efebe16..02a4b26cd 100644 --- a/14th-team5-iOS/Core/Sources/Bibbi/BBNetwork/Network/BBNetworkEventMonitor.swift +++ b/14th-team5-iOS/Core/Sources/Bibbi/BBNetwork/Network/BBNetworkEventMonitor.swift @@ -54,8 +54,7 @@ extension BBNetworkDefaultLogger: BBNetworkEventMonitor { httpLog.append("- HTTP BODY: \(httpBody)\n") } - // TODO: - Logger로 로그 출력하기 - print(httpLog + "\n--------------------------------------------------------\n") + BBLogger.logInfo(category: "Network", message: httpLog) } public func request( @@ -84,8 +83,7 @@ extension BBNetworkDefaultLogger: BBNetworkEventMonitor { httpLog.append("- STATUS CODE: \(statusCode)\n") httpLog.append("- RESONSE DATA: \(responseDataString)\n") - // TODO: - Logger로 로그 출력하기 - print(httpLog + "\n--------------------------------------------------------\n") + BBLogger.logInfo(category: "Network", message: httpLog) } public func request( diff --git a/14th-team5-iOS/Core/Sources/Utils/Logger/BBLogger.swift b/14th-team5-iOS/Core/Sources/Utils/Logger/BBLogger.swift new file mode 100644 index 000000000..9fbcf1092 --- /dev/null +++ b/14th-team5-iOS/Core/Sources/Utils/Logger/BBLogger.swift @@ -0,0 +1,149 @@ +// +// BBLogger.swift +// Core +// +// Created by 김도현 on 10/16/24. +// + +import Foundation +import os + +import RxSwift + + +private enum LogLevel { + case info + case debug + case error + case fault + + + var label: String { + switch self { + case .info: return "[INFO ⚪]" + case .debug: return "[DEBUG 🟢]" + case .error: return "[ERROR 🟠]" + case .fault: return "[FAULT 🔴]" + } + } +} + + +public struct BBLogger { + public static func logInfo( + function: String = #function, + fileName: String = #file, + category: String = "", + message: String = "" + ) { + guard let bundleId = Bundle.main.bundleIdentifier else { + fatalError("Bundle ID value not found") + } + + let infotMessage = createLoggerMessage( + level: LogLevel.info, + message: message, + function: function, + fileName: fileName + ) + + Logger(subsystem: bundleId, category: category) + .info("\(infotMessage)") + } + + + public static func logDebug( + function: String = #function, + fileName: String = #file, + category: String = "", + message: String = "" + ) { + + guard let bundleId = Bundle.main.bundleIdentifier else { + fatalError("Bundle ID value not found") + } + + let debugMessage = createLoggerMessage( + level: LogLevel.debug, + message: message, + function: function, + fileName: fileName + ) + + Logger(subsystem: bundleId, category: category) + .debug("\(debugMessage)") + + } + + + public static func logError( + function: String = #function, + fileName: String = #file, + category: String = "", + message: String = "" + ) { + guard let bundleId = Bundle.main.bundleIdentifier else { + fatalError("Bundle ID value not found") + } + + let errortMessage = createLoggerMessage( + level: LogLevel.error, + message: message, + function: function, + fileName: fileName + ) + + Logger(subsystem: bundleId, category: category) + .error("\(errortMessage)") + } + + public static func logFault( + function: String = #function, + fileName: String = #file, + category: String = "", + message: String = "" + ) { + guard let bundleId = Bundle.main.bundleIdentifier else { + fatalError("Bundle ID value not found") + } + + let faultMessage = createLoggerMessage( + level: LogLevel.fault, + message: message, + function: function, + fileName: fileName + ) + + Logger(subsystem: bundleId, category: category) + .fault("\(faultMessage)") + } +} + + +extension BBLogger { + + private static func createLoggerMessage( + level: LogLevel, + message: String, + function: String = #function, + fileName: String = #file + ) -> String { + + let timestamp: String = "🕖 \(Date().toFormatString(with: .ahhmmss))" + let functionName: String = "#️⃣ \(function)" + let filename: String = URL(fileURLWithPath: fileName).lastPathComponent + let message: String = "\n\(message)" + + return Array(arrayLiteral: level.label, timestamp, filename, functionName, message).joined(separator: "|") + } +} + + + +extension ObservableType { + public func log(_ category: String) -> Observable { + return self.do(onNext: { element in + BBLogger.logDebug(category: category, message: "\(element)") + }) + } +} diff --git a/14th-team5-iOS/Data/Sources/Trash/APIWorker.swift b/14th-team5-iOS/Data/Sources/Trash/APIWorker.swift index 6007004fe..3fa32bcd8 100644 --- a/14th-team5-iOS/Data/Sources/Trash/APIWorker.swift +++ b/14th-team5-iOS/Data/Sources/Trash/APIWorker.swift @@ -23,7 +23,7 @@ public class APIWorker: NSObject { var id: String = "APIWorker" private static let session: Session = { - let networkMonitor: BibbiNetworkMonitor = BibbiNetworkMonitor() + let networkMonitor: BBNetworkEventMonitor = BBNetworkDefaultLogger() let networkConfiguration: URLSessionConfiguration = AF.session.configuration let networkInterceptor: RequestInterceptor = NetworkInterceptor() let networkSession: Session = Session( diff --git a/14th-team5-iOS/Data/Sources/Trash/BibbiNetworkMonitor.swift b/14th-team5-iOS/Data/Sources/Trash/BibbiNetworkMonitor.swift deleted file mode 100644 index f2e587b9a..000000000 --- a/14th-team5-iOS/Data/Sources/Trash/BibbiNetworkMonitor.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// BibbiNetworkMonitor.swift -// Data -// -// Created by Kim dohyun on 7/10/24. -// - -import Foundation - -import Alamofire -import Core - - - -final class BibbiNetworkMonitor: EventMonitor { - - var queue: DispatchQueue = { - guard let bundleId = Bundle.main.bundleIdentifier else { - fatalError("올바르지 않는 식별ID값 입니다.") - } - return DispatchQueue(label: bundleId) - }() - - - func requestDidFinish(_ request: Request) { - print("[Reqeust BibbiNetwork LOG]") - print("- URL : \((request.request?.url?.absoluteString ?? ""))") - print(" - Method : \((request.request?.httpMethod ?? ""))") - print(" - Headers \((request.request?.headers) ?? .default):") - } - - public func request(_ request: DataRequest, didParseResponse response: DataResponse) { - print("[Response BibbiNetwork LOG]") - print("- URL : \((request.request?.url?.absoluteString ?? ""))") - print(" - Results : \((response.result))") - print(" - StatusCode : \(response.response?.statusCode ?? 0)") - print(" - Data : \(response.data?.toPrettyPrintedString ?? "")") - } -}