【问题标题】:Crashlytics CLS_Log vs. NSLog for production apps用于生产应用程序的 Crashlytics CLS_Log 与 NSLog
【发布时间】:2013-09-09 16:33:54
【问题描述】:

没有真正具体的问题,但我很好奇是否有人使用过CLSLog() or CLSNSLog() provided by the Crashlytics SDK

到目前为止,我的应用程序还很小,而且我一直都在打开 NSLog,甚至在提交最终应用程序时它们仍然完好无损。事后看来,我可能应该关闭这些,使用其他一些日志记录系统,或者#define 一个 DEBUG var,它会在发布时禁用它们,正如我在其他帖子中看到人们讨论的那样。

无论如何,只是好奇之前是否有人用过它?

【问题讨论】:

    标签: ios objective-c xcode debugging crashlytics


    【解决方案1】:

    最好的方法是声明一个名为 DEBUG 的预处理器变量

    在标题中,包括:

    #define DEBUG 1

    之后,出于调试目的,将 DEBUG 设置为 1,并将所有内容设置为 NSLog。

    #if DEBUG==1
       NSLog(@"debug mode activated, value for certain variables is: %d", i);
    #endif
    

    在您发货之前,只需更改

    #define DEBUG 0
    

    这样,您可以将整个代码留在应用程序中进行调试,并保留它以供进一步开发

    Crashlytics 的 CLS_LOG 让您可以从 Crashlytics 网站访问应用程序的日志。它还收集有关崩溃、内存警告、在某个时间点有多少用户崩溃等信息。

    编码愉快!

    编辑:

    我忘了添加一件事:对于我现在正在处理的应用程序,在前缀中,我们定义了:

    #define NSLog(...) CLS_LOG(__VA_ARGS__)
    

    因此,我们从不明确使用 CLS_LOG。我们只使用 NSLog,但所有 NSLog 都会进入 Crashlytics 仪表板。

    【讨论】:

    • 感谢您的 cmets / 建议。
    • 我在仪表板中实际在哪里查看日志?
    • 转到您的仪表板,单击其中一个崩溃,在图表下方,您应该会看到“查看最新崩溃(更多详细信息...)”。只需单击“更多详细信息...”链接即可查看最新崩溃的日志。
    • 您不必手动更改环境设置。检查构建设置中的“预处理器宏”
    【解决方案2】:

    我创建了一些 .h 文件,其中包含我需要使用的所有常用常量,并将其添加到 .pch 文件中(以免在其中造成混乱)。我还通过 pod 导入了 CrashLytics(有些原因是 @ 987654324@如果我以通常的方式包含在项目中,则无法识别它)

    #ifdef DEBUG
    #define NSLog(...) CLS_LOG(__VA_ARGS__)
    #define ServerURL    @"http://TestServer"
    #else
    #define ServerURL    @"http://RealServer" 
    #define NSLog(...)
    

    【讨论】:

    • 这不是错误的方式,你应该在第二个 NSLog 之后有 CLS_LOG 吗?在第一个之后还有类似 printf 的东西?
    • Jules,不确定我是否理解您的问题。我的代码只是一个示例(在调试模式下测试时我并不关心性能,因此我可以在发布模式下将其转发给 crashlytics,以使其对我更喜欢使用 Nslog 的用户来说更快,最后我什至评论了Nslog)。对于第一个版本,我认为我仍然使用 CLS_Log,直到我确定我有一个稳定的应用程序。最后由你决定,希望我能帮上忙。
    • 好的,我想我明白你的意思了。我先做了 NSLog,以便无论我是在调试还是发布(我认为它更方便)都可以使用它
    • 您没有注意到使用 CLS_LOG 记录所有 NSLog 的性能滞后吗?因为它正在录制到 crashlytics 服务器。我注意到我的应用程序的性能问题。似乎他们正在主线程上录制。如果我错了,请纠正我。
    • 我认为这取决于你在哪个线程上执行 NSLog 或 CLS_LOG(我真的怀疑他们是否专门为此启动主线程)。无论如何,NSLog 本身是相当昂贵的(你总是可以使用 Time Profiler 来检查它。据我观察,它大约是 8%)。Crashlytics 将日志保存在磁盘上,在应用程序崩溃后,他会在你发送报告时发送报告第二次启动该应用程序。希望我有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多