2017-09-04 29 views
1

我有一组自定义函数,基本上是对日志记录和断言行为的封装。特别是有一个assert类函数和一个致命的类函数。这两个产生一个日志,然后继续assert()或致命()。如何提供自定义函数/行/文件信息来手动调用Crashlytics崩溃

在我的特殊情况下,我安装了Crashlytics。所以生成的日志消息也会转到CLSLogv()。 assert()/ fatal()然后生成Crashlytics崩溃报告。这些都很好。

我的问题是在Crashlytics仪表板中,它基本上只是给我包装函数/文件/行信息作为我的问题标题和说明。实质上,每一个断言事件,尽管有不同的原因/调用者,在Crashlytics仪表板上看起来都是一样的。调用Crashlytics.sharedSession().make()而不是assert()/ fatal()也没有帮助,因为crash()不允许函数/行/文件的任何参数。

有没有其他的方法来做到这一点?或者,这实质上是对Crashlytics/Fabric/Google的增强请求?谢谢!

+1

迈克从面料这里。以下答案是添加此自定义信息和功能请求的最佳方式! –

+0

是的。我可以将这些信息写入日志。但我希望正确的碰撞函数/行/文件信息将作为仪表板中的标题可见,以便快速区分可能出现的问题。事实上,我们必须点击进入每个单独的问题,以找出堆栈,甚至是日志 – BiscottiGelato

+0

谢谢并理解!没有办法来定制我们如何分组这些。根据你想要断言或检查的内容,你也可以考虑一个非致命的异常方法:https://docs.fabric.io/apple/crashlytics/logged-errors.html但完全取决于你是什么试图检查大多数断言是否意味着如果断言不成立就会失败。 –

回答

1

Swift允许您使用这些特殊值:#file#function,#line#column。使用他们CLSLogv()可以帮助你找到确切的地方你的代码经历:

CLSLogv("I was here: %@.%@, %i:%i", getVaList([ #file, #function, #line, #column ])) 

结果在Crashlytics仪表板:

1 | 2017-09-05T08:32:22.088Z | I was here: /Users/.../SettingsTableViewController.swift.viewDidLoad(), 27:82 

希望这有助于:)。

+0

我没有问题在日志中获取函数/行/文件。但崩溃标题仍然只是我的包装。我正在谈论更多关于崩溃标题的内容,因此除了从仪表板快速浏览而不必潜入日志之外,更容易分辨不同的问题。 这是我的日志目前的样子: | \t 04:41:45:715(UTC)\t | \t 5 | 000A5F62 | JournalViewController.swift:260 | displayMoment |标记不可用,即使是瞬间加载 但Crashlytics仪表板仍然只是散布与我的包装信息。 ![Screenshot](https://ibb.co/kabfgv) – BiscottiGelato

+0

@BiscottiGelato我明白了......我不知道任何可以更改仪表板中出现的故障标题的设置... – nyg

相关问题