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

How to print customize logging in Crashlytics Swift?

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

我看到我们可以调用这个函数,但是我在哪里可以调用它呢?

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

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

如何在fabric中打印自定义原木? 崩溃时调用了哪个默认函数?

您可以通过下面的代码 .recordError(NSERROR) 记录自定义活动。但是,我不建议您将 Crashlytics 用于此类 "Button Clicked" 日志。使用一些分析工具,例如 (Google Analytics).

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

您可以使用 logEvent 函数创建 CrashLogger class,该函数将 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 了解更多信息。