Логи CLSLogv не приходят в Crashlytics - PullRequest
0 голосов
/ 19 января 2019

Это приложение 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 голосов
/ 02 февраля 2019

Надеясь, это может кому-то помочь.Каким-то образом я не мог заставить CLSLogv работать.Я закончил тем, что создал объект NSError и зарегистрировал это в Crashlytics в блоке catch.

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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...