如何在Crashlytics Swift中打印自定义日志记录?

时间:2018-12-20 10:25:59

标签: ios swift crashlytics google-fabric

我们已经为Fabric和crashlytics安装了pod文件,并将其导入到应用程序委托中。 didFinishLaunchingWithOptions 函数中的 Fabric.with([Crashlytics.self,Branch.self])。一切正常。但是我想打印出用户可以点击哪个动作。 例如,点击“登录” 按钮。

我看到我们可以调用此函数,但是在哪里可以调用此函数?

func write(string: String) {
        CLSLogv("%@", getVaList([string]))
    }

我们将无法从这次崩溃中找到代码行

如何在结构中打印自定义日志? 崩溃时会调用哪个默认函数?

2 个答案:

答案 0 :(得分:1)

您可以使用logEvent函数创建CrashLogger类,该类将eventName作为String[String: CustomStringConvertible]格式的数据字典将任何相关信息传递给Crashlytics

import Crashlytics

final class CrashLogger {

    static let shared = CrashLogger()

    private init() { }

    func logEvent(_ event: String, withData data: [String: CustomStringConvertible]) {
        let dataString = data.reduce("Event: \(event): ", { (result, element: (key: String, value: CustomStringConvertible)) -> String in
            return result + " (" + element.key + ": " + String(describing: element.value) + " )"
        })
        logEvent(dataString)
    }

    private func logEvent(_ message: String) {
        CLSLogv("%@", getVaList([message]))
    }
}

现在,只要您想在Crashlytics中记录自定义事件,就可以调用此logEvent方法,当您在Firebase中查看任何崩溃时,该方法将在日志部分中可用。

使用方法:,例如电子商务应用程序中的addToCart功能:

func addToCard(_ product: Product) {
    CrashLogger.logEvent("addToCart", withData: ["productId": product.id, "productName": product.name)
    //do further processing like update cart item count etc.
}

有关更多信息,请参考Crashlytics自定义日志记录docs

答案 1 :(得分:0)

您可以通过下面的代码.recordError(NSERROR)记录自定义活动。但是,我不建议您对此类“单击按钮”日志使用Crashlytics。使用某些Google Analytics(分析)工具,例如(Google Analytics(分析))。

let customError = NSError(domain: errorDomain, code: errorCode, userInfo: [
            NSLocalizedDescriptionKey: message,
            ])
            Crashlytics.sharedInstance().recordError(customError)