这是一个离子应用程序,其中一些代码是用本机编写的。它使用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()时,我可以在仪表板中看到它。
Exceptions为enum
enum Exceptions: Error {
case SQLiteError(message: String)
case JSONError(message: String)
}发布于 2019-02-02 18:13:55
希望它能帮助一些人。不知何故,我不能让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)
}https://stackoverflow.com/questions/54266187
复制相似问题