关于java:如何将android应用程序日志发送到远程服务器?

How to send android app logs to remote server?

在我的应用程序中,我想发送日志以防崩溃到远程服务器。我添加了Try-Catch块,在Catch中我将日志发送到服务器。我想知道我应该抓住哪些例外。我需要日志,以防每次撞车,以便我能修复它。捕获所有异常是一个好的实践吗?

事先谢谢。


以下是我从其他伟大答案中提出的建议的汇总列表:

  • 捕获所有未处理的异常。

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

  • 把这句话:你每一个Activity类的Thread.setDefaultUncaughtExceptionHandler(new UncaughtExceptionHandler(this));方法(在super()之后)。

  • 有关详细信息,请参考Android异常处理最佳实践中的这个伟大答案。

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

  • 在您知道的在某些情况下可能失败的所有代码周围附上"尝试/捕获"

  • 当没有互联网连接时
  • 在I/O操作期间
  • 当有可能出现疯狂的用户输入时
  • 当存在被零除的可能性时
  • 在顶层使用try/catch,因为所有异常都会冒泡到顶层。因此,在内部函数中,如果需要,可以考虑使用throw异常。然后,在顶层捕获特定的异常,并在catch块中正确地对异常类型进行排序。(参考这个伟大的答案:如何使用Try-Catch进行异常处理是最佳实践

  • 对于UI,即使出现错误(例如,如果错误是由于没有Internet连接造成的),也应该通过提供应用程序的"有限功能"版本来提供"持续可用性"。

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

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

参考1参考2参考3进一步阅读1进一步阅读2进一步阅读3

对于要远程记录未处理异常的android库,您可以查看以下内容:android remote stacktrace。

  • 下载.jar文件。
  • 将其添加到Java构建路径中。
  • 添加Internet权限:使用权限android:name="android.permission.internet"

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

  • 在您的服务器上,放置这个PHP文件,您可以编辑它来扩展功能。


你可以用破烂药或布格森

https://mint.splunk.com网站/

https://try.crashlytics.com网站/