DeviceLogger.swift 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // Copyright 2021 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. import Foundation
  15. #if SWIFT_PACKAGE
  16. import GoogleUtilities_Logger
  17. #else
  18. import GoogleUtilities
  19. #endif
  20. /// Enum of log messages.
  21. enum LoggerMessageCode: Int {
  22. case downloaderInstanceCreated = 1
  23. case downloaderInstanceRetrieved
  24. case downloaderInstanceDeleted
  25. case modelDownloaded
  26. case modelDownloadError
  27. case retryDownload
  28. case backgroundModelDownloaded
  29. case backgroundDownloadError
  30. case disableBackupError
  31. case downloadedModelFileSaved
  32. case downloadedModelSaveError
  33. case anotherDownloadInProgressError
  34. case invalidDownloadSessionError
  35. case mergeRequests
  36. case localModelFound
  37. case allLocalModelsFound
  38. case listModelsError
  39. case modelNameParseError
  40. case noLocalModelInfo
  41. case noLocalModelFile
  42. case outdatedModelPathError
  43. case modelDeleted
  44. case modelDeletionFailed
  45. case validHTTPResponse
  46. case validAuthToken
  47. case invalidOptions
  48. case invalidModelInfoFetchURL
  49. case downloadedModelInfoSaved
  50. case missingModelHash
  51. case invalidModelInfoJSON
  52. case modelInfoDeleted
  53. case modelInfoDownloaded
  54. case modelInfoUnmodified
  55. case authTokenError
  56. case expiredModelInfo
  57. case modelHashMismatchError
  58. case noModelHash
  59. case modelInfoRetrievalError
  60. case modelNotFound
  61. case invalidArgument
  62. case permissionDenied
  63. case resourceExhausted
  64. case notEnoughSpace
  65. case hostnameError
  66. case invalidHTTPResponse
  67. case analyticsEventEncodeError
  68. case telemetryInitError
  69. case testError
  70. }
  71. /// On-device logger.
  72. class DeviceLogger {
  73. /// Log identifier.
  74. static let service = "[Firebase/MLModelDownloader]"
  75. static func logEvent(level: GoogleLoggerLevel, message: String, messageCode: LoggerMessageCode) {
  76. let code = String(format: "I-MLM%06d", messageCode.rawValue)
  77. let args: [CVarArg] = []
  78. GULLoggerWrapper.log(
  79. with: level,
  80. withService: DeviceLogger.service,
  81. withCode: code,
  82. withMessage: message,
  83. withArgs: getVaList(args)
  84. )
  85. }
  86. }