RoomKitLog.swift 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. //
  2. // RoomKitLog.swift
  3. // TUIRoomKit
  4. //
  5. // Created by CY Zhao on 2024/12/12.
  6. //
  7. import Foundation
  8. #if canImport(TXLiteAVSDK_TRTC)
  9. import TXLiteAVSDK_TRTC
  10. #elseif canImport(TXLiteAVSDK_Professional)
  11. import TXLiteAVSDK_Professional
  12. #endif
  13. class RoomKitLog {
  14. private static let API = "TuikitLog"
  15. private static let LOG_KEY_API = "api"
  16. private static let LOG_KEY_PARAMS = "params"
  17. private static let LOG_KEY_PARAMS_LEVEL = "level"
  18. private static let LOG_KEY_PARAMS_MESSAGE = "message"
  19. private static let LOG_KEY_PARAMS_FILE = "file"
  20. private static let LOG_KEY_PARAMS_LINE = "line"
  21. private static let LOG_KEY_PARAMS_MODULE = "module"
  22. private static let LOG_KEY_PARAMS_MODULE_VALUE = "TUIRoomKit"
  23. private func `init`() {}
  24. enum RoomKitLogLevel: Int {
  25. case error = 2
  26. case warn = 1
  27. case info = 0
  28. }
  29. static func error(_ file: String, _ line: String, _ messages: String...) {
  30. log(level: .error, file: file, line: line, messages)
  31. }
  32. static func warn(_ file: String, _ line: String, _ messages: String...) {
  33. log(level: .warn, file: file, line: line, messages)
  34. }
  35. static func info(_ file: String, _ line: String, _ messages: String...) {
  36. log(level: .info, file: file, line: line, messages)
  37. }
  38. private static func log(level: RoomKitLogLevel = .info, file: String, line: String, _ messages: [String]) {
  39. let apiParams: [String: Any] = [
  40. LOG_KEY_API: API,
  41. LOG_KEY_PARAMS: [
  42. LOG_KEY_PARAMS_LEVEL: level.rawValue,
  43. LOG_KEY_PARAMS_MESSAGE: messages.joined(),
  44. LOG_KEY_PARAMS_MODULE: LOG_KEY_PARAMS_MODULE_VALUE,
  45. LOG_KEY_PARAMS_FILE: file,
  46. LOG_KEY_PARAMS_LINE: Int(line) ?? 0,
  47. ],
  48. ]
  49. let jsonData = try? JSONSerialization.data(withJSONObject: apiParams, options: .prettyPrinted)
  50. guard let jsonData = jsonData, let jsonString = String(data: jsonData, encoding: .utf8) else { return }
  51. TRTCCloud.sharedInstance().callExperimentalAPI(jsonString)
  52. }
  53. }