Files
firebase-ios-sdk/FirebaseMLModelDownloader/Sources/DeviceLogger.swift
T
manjanac 9597ffe51b Removes saved path on device (#7439)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Add tests for list models.

* Failable emptying of model directory in tests.

* Remove path from local model info and user defaults.

* Clean up user defaults on delete + add interpreter to test app.

* Replace .absoluteString with .path. This makes model.path work directly with TFLite interpreter.

* Fix paths in tests.

* Unit test for successful get model.

* Rename modelPath to modelURL.

* Use defaults.integer instead of casting to Int.

* Remove force casting.

* Mostly minor fixes that came out of the bugbash (#7462)

* Use appropriate errors for network offline and api disabled.

* Error + test for resourceExhausted.

* Surface backend error message in logs whenever available.

* Add disclaimer to empty directories for testing only.

* Add Firelog events for model info retrieval.

* Add documentation + other minor fixes. (#7465)

* Add docs + clean up ModelDownloader.swift.

* Add docs + clean up ModelDownloadTask.swift.

* Add docs + clean up FileDownloader.swift.

* Add docs + clean up LocalModelInfo.swift. Handle TODO for userdefaults init failure.

* Add docs + clean up RemoteModelInfo.swift, DownloaderUserDefaults.swift.

* Add docs + clean up ModelInfoRetriever.swift.

* Add docs + clean up ModelDownloadConditions.swift.

* Add docs + clean up DeviceLogger.swift.

* Add docs + clean up TelemetryLogger.swift.

* Add docs + clean up ModelFileManager.swift.

* Remove resolved TODOs + other minor fixes.

* Update model download conditions init.

* Fix comment formatting.

* Minor newline formatting.

* Minor comment formatting.

* Add docs for ModelDownloadConditions.

* Basic fix for user defaults race condition.

* Minor updates to tests.

* Minor updates to tests.

* Final fixes (#7471)

* Refactor error parsing in model info response.

* Add Firelog for delete event + minor fixes.

* Temporary - test to check telemetry for delete event.

* Disable backup of model files; handle inability to locate model storage dir.

* Minor fixes.

* Add tflite path extension to model file.
2021-02-10 09:47:07 -08:00

91 lines
2.5 KiB
Swift

// Copyright 2021 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
import Foundation
#if SWIFT_PACKAGE
import GoogleUtilities_Logger
#else
import GoogleUtilities
#endif
/// Enum of log messages.
enum LoggerMessageCode: Int {
case downloaderInstanceCreated = 1
case downloaderInstanceRetrieved
case downloaderInstanceDeleted
case modelDownloaded
case modelDownloadError
case retryDownload
case backgroundModelDownloaded
case backgroundDownloadError
case disableBackupError
case downloadedModelFileSaved
case downloadedModelSaveError
case anotherDownloadInProgressError
case invalidDownloadSessionError
case mergeRequests
case localModelFound
case allLocalModelsFound
case listModelsError
case modelNameParseError
case noLocalModelInfo
case noLocalModelFile
case outdatedModelPathError
case modelDeleted
case modelDeletionFailed
case validHTTPResponse
case validAuthToken
case invalidOptions
case invalidModelInfoFetchURL
case downloadedModelInfoSaved
case missingModelHash
case invalidModelInfoJSON
case modelInfoDeleted
case modelInfoDownloaded
case modelInfoUnmodified
case authTokenError
case expiredModelInfo
case modelHashMismatchError
case noModelHash
case modelInfoRetrievalError
case modelNotFound
case invalidArgument
case permissionDenied
case resourceExhausted
case notEnoughSpace
case hostnameError
case invalidHTTPResponse
case analyticsEventEncodeError
case telemetryInitError
case testError
}
/// On-device logger.
class DeviceLogger {
/// Log identifier.
static let service = "[Firebase/MLModelDownloader]"
static func logEvent(level: GoogleLoggerLevel, message: String, messageCode: LoggerMessageCode) {
let code = String(format: "I-MLM%06d", messageCode.rawValue)
let args: [CVarArg] = []
GULLoggerWrapper.log(
with: level,
withService: DeviceLogger.service,
withCode: code,
withMessage: message,
withArgs: getVaList(args)
)
}
}