检索对 Log 的调用?例如Log.w() Log.e() Log.i()

Posted

技术标签:

【中文标题】检索对 Log 的调用?例如Log.w() Log.e() Log.i()【英文标题】:Retrieving calls to Log? e.g. Log.w() Log.e() Log.i() 【发布时间】:2014-09-30 17:29:37 【问题描述】:

对于我正在开发的应用,我希望简化故障排除,无论是在开发过程中还是在发布时。我希望能够检索到Log 的调用,以便在没有连接USB 调试的手机的情况下运行应用程序,以便可以检索它并将其发送给我。例如,当应用程序崩溃或调用Log.e(...) 时,可以将日志历史记录(对Log.i()Log.w() 的调用)发送到服务器,也可以由用户手动发送给我。

如何/应该如何做到这一点?

此外,该技术是否应该根据应用程序是处于开发阶段还是发布阶段而有所不同? (我从android Log docs 知道Log.v(...) 不应该编译到发布版本中——有没有比注释掉所有这些调用更好的方法?)

扩展Log 或滚动我自己可能有意义,但魔鬼在细节中。

【问题讨论】:

看看bugsense.com或crashlytics.com等服务 【参考方案1】:

为了检索崩溃日志,有一个库 ACRA。 Acra 将向您的服务器发送崩溃报告。或者,Google Play 在开发者控制台中也有一个崩溃和 ANR 的选项卡,用户提交的崩溃报告存储在其中。 Google Play 控制台的崩溃报告非常易于使用,并提供有关相同崩溃次数以及发生崩溃的应用程序版本的附加信息。

【讨论】:

【参考方案2】:

在我的应用程序中,我创建了 LogWrapper 类,正如人们所期望的那样,它包装了 Log 调用。在每个方法中,我都会检查BuildCondig.DEBUG 标志以确定我是处于调试模式还是发布模式。

另外,我的 LogWrapper 检查哪个方法正在调用并将其添加到 meassge,这通常不能直接使用 Log 类。

如果应用程序处于调试模式,我将日志调用传递给 Log 类,否则我将日志调用传递给第 3 方库,在我的情况下为 Crashlytics。还有更多的崩溃工具,例如Hockeyapp也是推荐平台。

【讨论】:

以上是关于检索对 Log 的调用?例如Log.w() Log.e() Log.i()的主要内容,如果未能解决你的问题,请参考以下文章

在android程序中,log.w用于输出啥级别的日志信息

如何查看log日志文件呢?

Android Log等级的介绍

android学习-第二讲(修改项目名称和图标,log,过滤器)

ECMAScript 6 入门之变量的解构赋值

Android的Log.i()方法的两个参数是啥?