我已经在几天前发布了一个完整的管理应用程序。有时,最终用户会报告已发布应用程序的问题,但最终用户无法重现。
是否有工具可用于跟踪使用我的应用程序的任何设备生成的日志?
答案 0 :(得分:1)
使用其中一种服务(当然你可以找到其他服务,但这些服务最受欢迎):
我个人使用crashlytics,因为它们显示异常抛出非常好。
- 编辑 - 从你最新的评论,没有办法(我现在)无法以编程方式获取logcat输出
答案 1 :(得分:1)
Crashlytics (由Fabric提供)提供Custom Logging和Custom Keys,它们提供了一种远程登录服务器的方法。
我在过去使用它非常成功,正是出于这个原因 - 它让您可以深入了解应用流程,而无需实际访问设备。
记录消息的默认调用是:
Crashlytics.getInstance().core.log(int priority, String tag, String msg);
这将写入LogCat以及Crashlytics。
或者,只需提供一条消息即可跳过登录LogCat。例如网站上的例子:
Crashlytics.getInstance().core.log("Higgs-Boson detected! Bailing out...");
答案 2 :(得分:0)
您可以使用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.
}
之后,所有跟踪过的痕迹将通过您的应用程序显示在Google Developer Console中。
您还可以添加一个侦听器来捕获未处理的异常。因此,每当发生异常时,您就不会发生调用处理程序。
Thread.setDefaultUncaughtExceptionHandler(new MyReportHelper());
当然,您应该始终尝试捕获并处理您知道的所有异常,此处理程序仅用于紧急情况。有关处理程序的详细信息,请参阅here。
答案 3 :(得分:0)
如果使用Google搜索我们可能会找到很多工具,但我认为使用我们自己的解决方案会很好,因为应用可能会记录敏感信息。
如果您的应用正在与您自己的后端服务器进行通信,那么您可以编写一个额外的Web服务,该服务可以保存(在db中)应用程序中发生的任何异常。您必须将应用程序日志详细信息发送到服务器以将其保存在数据库中。如果此应用程序有管理Web帐户,您可以添加一个选项以从数据库中列出这些日志。这是安全的,因为您没有将应用程序日志发送到第三方工具进行记录。
另一个安全的解决方案是在您自己的服务器中托管any tool like this (which can show realtime log from your device)。
答案 4 :(得分:0)
先前的回答主要是关于崩溃报告。但是,除了崩溃报告之外,日志还有更多内容。
为此,我们创建了Shipbook。
Shipbook使您能够基于每个用户和会话在云中远程收集,搜索和分析用户移动应用日志和异常。