Files
firebase-ios-sdk/FirebaseMLModelDownloader/Sources/DeviceLogger.swift
T
manjanac d7950ddbe4 Separate error messages into extensions (#7322)
* Restores ML Pods after M77.

* Fix Package.swift

* Re-add catalyst to GHA workflow.

* Update error handling.

* Add logging for background download failure.

* Remove empty file.

* Slight refactor of error descriptions + using ISO8601DateFormatter where available.

* Slight refactor error descriptions + adding availability for ISO8601DateFormatter.
2021-01-19 14:28:20 -08:00

49 lines
1.6 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
import os
/// Enum of debug messages.
// TODO: Create list of all possible messages with code - according to format.
enum LoggerMessageCode {
case modelDownloaded
case downloadedModelMovedToURL
case analyticsEventEncodeError
case telemetryInitError
case backgroundDownloadError
}
/// On-device logger.
class DeviceLogger {
/// Log event on device.
static func logEvent(level: OSLogType, category: OSLog, message: StaticString,
messageCode: LoggerMessageCode) {
// TODO: Replace with GULLogBasic.
os_log(message, log: category, type: level)
}
}
/// Extension to categorize on-device logging.
extension OSLog {
private static let subsystem: String = {
let bundleID = Bundle.main.bundleIdentifier ?? ""
return "com.google.firebaseml.\(bundleID)"
}()
/// List of logging categories.
static let modelDownload = OSLog(subsystem: subsystem, category: "model-download")
static let analytics = OSLog(subsystem: subsystem, category: "analytics")
}