Android Logcat记录Chatty模块行过期消息


70

我收到许多与我的应用程序有关的此类logcat消息。

11-19 19:04:23.872 3327 3440 I chatty : uid=10085 com.xxxx.yyy expire 18 lines

这些日志消息是什么?我是否在这里缺少实际的应用程序logcat日志?


我也得到了这些,尽管我的应用程序运行良好,但我很想知道它们的含义。我猜是和日志有关吗? 01-22 16:04:14.256 2398 2398 I chatty : uid=10126(be.xxx.yyyyyyyyyy) expire 11 lines
神游

Answers:


63

我想添加另一个答案,因为没有一个现有的答案能真正回答“我是否在这里丢失了实际的应用程序logcat日志?' 题。

是的,您缺少日志。一旦应用程序被logcat认为是“聊天”(每秒超过5行),您的应用程序日志将被折叠。

您可以通过将您的应用程序列入logcat白名单来避免此行为:

adb logcat -P '<pid or uid of your app>'

您可以通过执行以下命令来打印当前的白名单和黑名单:

adb logcat -p

此命令还有助于打印logcat统计信息:

adb logcat -S

此外,我发现在测试过程中直接从代码中将我的应用程序自动添加到logcat白名单中很有用:

int pid = android.os.Process.myPid();
String whiteList = "logcat -P '" + pid + "'";
Runtime.getRuntime().exec(whiteList).waitFor();

更多信息可以在这里的logcat官方文档中找到


@ lorenzo-s您adb logcat -p和的输出是adb logcat -S什么?
安东·马尔梅金

adb logcat -p打印我的应用程序PID,即我在中使用的PID,adb logcat -P 'pid'与在Studio的Android Monitor logcat下拉列表中看到的ID相同。而这里是输出为adb logcat -S
洛伦佐-S

我没有真正看到您的应用程序的内部Chattiest UIDs in main log buffer:部分。您确定您的应用程序被认为是健谈的吗?
安东·马尔梅金

是的,我经常chatty在logcat中收到消息,说行已被跳过。您看不到它,因为它可能是一个全新的开始,我只运行该命令来向您发送输出。这是打印一些闲聊消息后的日志,我的应用程序是PID 11432的日志,与我看到的一样adb logcat -p
lorenzo-s

首先,请尝试通过UID(而不是PID)将您的应用列入白名单。如果这没有帮助,我只能建议重新启动设备,重新启动adb,清除白名单并再次添加应用程序PID / UID。
安东·马尔梅金

43

是的,这表明某些消息未将其放入实际日志中,可能是因为其他应用程序向其中发送了太多消息。

这似乎是Marshmallow(?)中liblog中的新事物。找不到关于新日志记录策略的清晰解释,即使实际上有一个解释,但此处还是提到这种变化:

一旦应用程序每秒记录超过5行,我们便宣布该应用程序过于闲谈。请针对正在产生此开发人员详细级别的类日志记录垃圾邮件的应用程序所有者提交错误报告。日志为256KB,这意味着应用程序正在发起DOS攻击,并将日志时间跨度缩短至6秒(!),从而使其对所有其他日志都无效。


27
我对此有很多看法com.google.android.gms.persistent……我应该针对Google提交错误吗?:-D
Michael

7
另外,我经常看到它说“到期1行” ...这太健谈了吗?
迈克尔

9
我正在收集日志5-10秒,结果是来自chatty的261条日志条目,因此应该填写此错误,因为chatty过于健谈:D
LLL 2017年

5
如何在IDE上禁用它?
Android开发人员

11

您可以使用以下方式禁用此行为:

adb logcat -P ""

或通过设置

setprop ro.logd.filter disable

setprop persist.logd.filter disable 

您可以在以下位置检查代码

http://androidxref.com/7.1.2_r36/xref/system/core/logd/LogWhiteBlackList.cpp


这些属性似乎并没有完全禁用它,但我认为如果直接链接到liblog会有所帮助。
法老王大厨

这是正确的答案,所以希望有一天它不是列表中的最后一个。
satur9nine

setprop persist.logd.filter disable在Android 8.1上使用,然后重新启动,但仍然看到chatty ... identical线条。是否identical意味着邮件仍被丢弃?
zoulou

@zoulou好吧,如果这些日志相同,那么除了这些相同日志的时间戳之外,您基本上不会缺少任何其他内容
Risinek

9

您可以使用以下方式禁用此行为:

adb logcat -P ""

我们如何重新打开它?这在任何地方都有记录吗?
nealmcb '16

@nealmcb我认为您不能永远禁用它。这些东西总是暂时的,对吧?
milosmns

1
@milosmns然后持续多长时间?直到重启?
nealmcb

@nealmcb好在我的6P上,它会刷新日志并退出
milosmns

2
我没有收到任何错误消息。在执行此命令adb logcat -P“”之后,它不会禁用chatty。我尝试提及我应用的UID / PID,它被列入了白名单,但仍然没有禁用聊天功能。我的设备是OnePlus5
Santosh Salunke,

0

首先执行adb logcat -S以检查您的应用程序是否在Chattiest UID / PID下。

如果存在,则通过执行以下命令将您的应用程序列入白名单

adb logcat -P "UID/PID"

要检查所有列入白名单/列入黑名单的应用程序,请执行以下命令

adb logcat -p
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.