首页 > 解决方案 > 如何在 Crashlytics Swift 中打印自定义日志记录?

问题描述

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

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

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

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

如何在织物上打印自定义日志?崩溃时调用哪个默认函数?

标签: iosswiftcrashlyticsgoogle-fabric

解决方案


您可以CrashLogger使用 logEvent 函数创建类,该函数将 eventNameString和数据字典作为[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 自定义日志记录文档


推荐阅读