【问题标题】:How to send android app logs to remote server?如何将android应用程序日志发送到远程服务器?
【发布时间】:2015-10-03 23:45:19
【问题描述】:

在我的应用程序中,我想将日志发送到远程服务器以防崩溃。我添加了 try-catch 块,并且在 catch 中我将日志发送到服务器。我想知道我应该捕获哪些异常。我需要日志以防每次崩溃,以便我可以修复它。捕获所有异常会是一个好习惯吗?

提前致谢。

【问题讨论】:

    标签: java android exception-handling


    【解决方案1】:

    以下是我从其他优秀答案中整理的建议的摘要列表:

    • 捕获所有未处理的异常

      1. 创建一个实现java.lang.Thread.UncaughtExceptionHandlerExceptionHandler。您可以使用此类来自定义和记录错误。

      2. 把这个:Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this)); 放在每个 Activity 类的 OnCreate() 方法中(在 super() 之后)。

      3. 详情请参考Android exception handling best practice的这个精彩回答。

    • 在所有外部/外部运行的代码周围加上 try/catch。 (例如 - 使用 3rd 方组件的代码)

    • 在你知道的所有代码周围加上 try/catch,在某些情况下可能会失败

      1. 没有互联网连接时
      2. I/O 操作期间
      3. 当有可能出现疯狂的用户输入时
      4. 当存在被零除的可能性时
    • 在顶层使用 try/catch,因为所有异常都会冒泡到顶层。所以,在内部函数中,如果需要,可以考虑使用throw异常。然后,在顶层,捕获特定异常并在 catch 块中正确对异常类型进行排序。 (参考这个很棒的答案:How using try catch for exception handling is best practice

    • 对于 UI,您应该通过提供“有限功能”版本的应用程序来提供“持续可用性”,即使发生错误(如果错误是由于,例如,没有互联网连接)。

    • 过分急于向用户报告错误并不是一个好主意。

    • 持续错误消息是错误的。用消息通知用户并让用户关闭/删除它。

    Reference 1 | Reference 2 | Reference 3 | Further Reading 1 | Further Reading 2 | Further Reading 3


    对于远程记录未处理异常的 Android 库,您可以查看:android-remote-stacktrace

    • 下载.jar文件。
    • 将其添加到 Java 构建路径。
    • 添加 INTERNET 权限:uses-permission android:name="android.permission.INTERNET"

    • 在你的活动或服务的OnCreate方法中,放入'ExceptionHandler.register(this, "http://your.domain/path");'

    • 在您的服务器上,放置 this PHP file,您可以对其进行编辑以扩展功能。

    【讨论】:

    • 服务器部分不是我处理的。有没有可以发帖的默认服务器?
    • 默认转到trace.nullwire.com。或者您可以使用免费的 PHP 网络主机来测试该功能。
    • 我想将日志发送到我存储数据的同一台服务器。我有 API,我必须发送许多其他参数,但除外。所以我的问题是我应该捕获哪些异常。
    • 我更新了我的答案,试图反映您关于何时以及应该捕获哪些异常的问题。请看一看。如果答案有帮助,请标记为答案并点赞!
    • nullwire.com 现在好像死了
    【解决方案2】:

    您可以使用 Crashlytics 或 Bugsense

    https://mint.splunk.com/

    https://try.crashlytics.com/

    【讨论】:

    • 我不必使用第 3 方库
    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 2017-10-02
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    相关资源
    最近更新 更多