【问题标题】:Is there a way to trace log of android app that is published有没有办法跟踪已发布的 android 应用程序的日志
【发布时间】:2015-10-08 11:28:55
【问题描述】:

我有一个完整的管理应用程序,几天前我刚刚发布了它。有时最终用户会报告已发布应用程序的问题,而我最终无法重现。

是否有工具可用于跟踪使用我的应用程序的任何设备生成的日志?

【问题讨论】:

  • 每当您的应用出现任何错误时,您都可以尝试发送电子邮件(跟踪)。但这种方法是不可取的。
  • 市场上有很多错误报告工具,您也可以使用这些工具
  • 将谷歌分析添加到您的应用中
  • 只要查看你的市场账户就会有所有崩溃日志。
  • 当然我不是在询问崩溃报告。我已经为此集成了 Crashlytics,但我正在寻找一种方法,以便我可以在屏幕上获取某些变量的值,就像我在 adb Logcat 中生成日志一样。

标签: java android logging trace


【解决方案1】:

使用其中一种服务(当然您可以找到其他服务,但这些是最受欢迎的):

我个人使用 crashlytics,因为它们显示抛出的异常非常好。

-- 编辑-- 根据您的最新评论,没有办法(我现在)以编程方式获得没有 root 的 logcat 输出

【讨论】:

    【解决方案2】:

    Crashlytics(由 Fabric 提供)提供 Custom LoggingCustom Keys,它们提供了一种远程登录到其服务器的方法。

    正是因为这个原因,我过去使用它取得了巨大的成功 - 它让您无需物理访问设备即可深入了解应用流程。


    记录消息的默认调用是:

    • Crashlytics.getInstance().core.log(int priority, String tag, String msg);

    这将写入 LogCat 以及 Crashlytics。

    或者,只需提供一条消息以跳过日志记录到 LogCat。根据网站上的示例:

    • Crashlytics.getInstance().core.log("Higgs-Boson detected! Bailing out...");

    【讨论】:

      【解决方案3】:

      您可以使用Google Analytics API part for handling exceptions。它还提供了收集堆栈跟踪的工具。 (这是来自 API 页面的示例)

      // Using StandardExceptionParser to get an Exception description.
      try {
      
        // Request some scores from the network.
        ArrayList<Integer> highScores = getHighScoresFromCloud();
      
      } catch (IOException e) {
      // Get tracker.
      Tracker t = ((AnalyticsSampleApp) getActivity().getApplication()).getTracker(
          TrackerName.APP_TRACKER);
      
        t.send(new HitBuilders.ExceptionBuilder()
            .setDescription(
                new StandardExceptionParser(this, null)
                    .getDescription(Thread.currentThread().getName(), e))
            .setFatal(false)
            .build()
        );
      
        ... // Display alert to user that high scores are currently unavailable.
      }
      

      之后,所有跟踪的 stracktraces 都将显示在您的应用程序中的 Google Developer Console 中。

      您还可以添加一个侦听器来捕获未处理的异常。因此,每当发生您没想到的异常时,都会调用该处理程序。

      Thread.setDefaultUncaughtExceptionHandler(new MyReportHelper());
      

      当然,您应该始终尝试捕获并处理您知道的所有异常,此处理程序仅用于紧急情况。有关处理程序外观的更多详细信息,请参阅here

      【讨论】:

        【解决方案4】:

        如果用谷歌搜索,我们可能会找到很多工具,但我认为最好使用我们自己的解决方案,因为该应用可能会记录敏感信息。

        如果您的应用程序正在与您自己的后端服务器通信,那么您可以编写一个额外的 Web 服务,它可以保存(在 db 中)应用程序中发生的任何异常。您必须将应用程序日志详细信息发送到服务器才能将其保存在数据库中。如果此应用程序有一个管理 Web 帐户,您可以添加一个选项以从数据库中列出这些日志。这将是安全的,因为您不会将应用日志发送到第三方工具进行日志记录。

        另一个安全的解决方案是在您自己的服务器中托管 any tool like this (which can show realtime log from your device)

        【讨论】:

          【解决方案5】:

          之前的答案主要是关于崩溃报告。但是日志不仅仅是崩溃报告。

          正是为此,我们创建了 Shipbook。

          Shipbook 让您能够基于每个用户和会话远程收集、搜索和分析您的用户移动应用程序日志和云中的异常情况。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-02-21
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多