Crashlytics中没有CLSLogv日志

时间:2019-01-19 10:36:04

标签: swift ionic-framework crashlytics

它是一个Ionic应用程序,其中包含一些用本机编写的代码。它使用cordova-plugin-firebase来记录Crashlytics。

在iOS的本机部分中,我们也尝试使用Crashlytics启用日志记录。但是,无论我尝试使用什么CLSLogv发送的日志,在仪表板中都不可见。

这是我的代码。

@objc(ImageUpload) class ImageUpload : CDVPlugin {
    var backgroundTask: UIBackgroundTaskIdentifier = UIBackgroundTaskInvalid

    //https://docs.fabric.io/apple/crashlytics/enhanced-reports.html#custom-logging-in-swift
    private func sendErrorToCrashlytics(error: String) {
        NSLog("Error in send error function is \(error)")
        CLSLogv("%@", getVaList([error]))
    }

    @objc(imageUpload:)
    func imageUpload(command: CDVInvokedUrlCommand) {
      registerBackgroundTask()
      func execute() {
        let db = SQLiteDatabase()
         var recToUpLoad: PayloadModel? = nil
         while(toCheck) {
           do {
             let record = try db.readValues() // THIS METHOD THROWS EXCEPTION
           } catch Exceptions.SQLiteError(let error) {
             self.sendErrorToCrashlytics(error: error) // IT COMES HERE AFTER EXCEPTION
           }
         }
       }
       DispatchQueue(label: "imageUploadPlugin",qos: .background).async 
       {
        execute()
       }
     }
   }

但是CLSLogv在Crashlytics中根本不可见。但是,当我执行Crashlytics.sharedInstance().throwException() 时,可以在仪表板中看到它。

例外是enum

enum Exceptions: Error {
    case SQLiteError(message: String)
    case JSONError(message: String)
}

1 个答案:

答案 0 :(得分:0)

希望它可以帮助某人。我莫名其妙地无法工作CLSLogv。我最终创建了一个NSError对象,并将其记录在catch块的Crashlytics中。

catch Exceptions.SQLiteError(let error) {
   let userInfo = [NSLocalizedDescriptionKey: error.message, "query": error.query]
   let errorObj = NSError(domain: "sqlite", code: 400, userInfo: userInfo)
   Crashlytics.sharedInstance().recordError(errorObj)
}