我将要描述的内容已经用具有完全相同行为的2.3和4.4.2设备进行了测试,因此我隔离了LogCat访问权限更改带来的任何潜在问题。
我使用的是ACRA版本0.4.5
我想做的很简单,确保我可以向Cloudant的ACRA报告发送按我的应用程序名称过滤的设备的Logcat。
为了做到这一点,我遵循了手册和SO之前的一些帖子(比如这篇:如何在ACRA中过滤logcat输出?)
理想情况下,我应该在配置中包括以下输入:
logcatArguments = { "-t", "100", "MyApp:D", "*:S" }
但是,这不能正常工作,并且没有错误报告到达数据库,只有两行显示空报告。为了确保有日志,我在强制调用之前强制输出了LogCat,如下所示:
Log.i(TAG + ":Sending Error or Suggestion", "My message ");
ACRA.getErrorReporter().handleException(null);
如果我在ACRA配置中更改(两个设备)以下任何一行:
logcatArguments = { "-t", "100", "MyApp:D"}
logcatArguments = { "-t", "100"}
我正在从LogCat获得完整的报告,没有任何过滤。我还尝试了包含-v long选项(以防万一)。
回顾SO中关于此主题的所有答案,我发现所有答案都已过时,因为我无法明确找到与此问题和版本0.4.5相关的答案。
知道发生了什么事吗?
======
澄清
经过一番调查,问题并不是那么简单。
目前,所有可用的文档都提供了如何使用TAG在ACRA中进行筛选的示例,目前还不清楚如何像在Eclipse中那样通过应用程序进行筛选。
因此,如果你遇到了和我一样的错误,可能是因为(正如这个问题的答案所示)你在所有日志中使用的标签并不完全相同。
ACRA只是直接向logcat提供这些参数。所以你的问题是,我该如何过滤logcat。
logcat过滤器是params之后的所有过滤器。过滤器的形式为<tag>:<log_level>
。如果指定的log_level为S
,则将这些消息标记为静默(即不显示它们)。
因此,在没有收到消息的配置中:
logcatArguments = { "-t", "100", "MyApp:D", "*:S" }
您要求使用标记MyApp
记录所有消息,并忽略所有其他消息。由于您没有得到日志,我建议您实际上没有在应用程序中使用MyApp
作为日志标记。