android logcat记录chatty模块行过期消息

And*_*oid 55 android logcat android-logcat

我收到了很多与我的应用程序相关的logcat消息.

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

这些日志消息是什么?我在这里错过了我的实际应用程序logcat日志吗?

Анд*_*шев 41

是的,这表明某些消息没有进入实际日志,可能是因为其他应用程序向其发送了太多消息.

这似乎是Marshmallow(?)中liblog中的一个新东西.无法找到新的日志记录策略的明确解释,或者即使实际存在一个,但这里提到的更改有点:

一旦它每秒记录超过5行,我们就宣布一个应用程序过于繁琐.请对生成此developer-verbose-debug-level类记录垃圾邮件的应用程序所有者提交错误.日志是256KB,这意味着应用程序正在创建DOS攻击并将日志时间缩短到6秒(!),使其对所有其他人无用.

  • 我在`com.google.android.gms.persistent`中看到了很多...我应该向Google提出错误吗?:-D (25认同)
  • 另外,我经常看到它说"过期1行"......这太过健谈了怎么样? (6认同)
  • 我收集日志5-10秒,结果是来自chatty的261个日志条目,所以bug应该被填充因为chatty太健谈了:D (5认同)
  • 如何在IDE上禁用此功能? (5认同)
  • 我想知道为特定设备禁用此功能的任何方法吗? (3认同)

Ant*_*gin 36

我想添加另一个答案,因为现有的答案都没有实际回答' 我是否错过了我的实际应用程序logcat日志?' 题.

是的,你错过了日志.一旦app被logcat认为是"聊天"(每秒超过5行),你的应用日志就会崩溃.

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

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();
Run Code Online (Sandbox Code Playgroud)

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

  • 你的解决方法没有对我有用:( (3认同)

小智 9

您可以使用以下命令禁用此行为:

adb logcat -P ""
Run Code Online (Sandbox Code Playgroud)

  • 我没有收到任何错误消息。在执行此命令 adb logcat -P "" 后,它不会禁用闲聊。我试着提到我的应用程序的 UID/PID,它被列入白名单,但仍然没有禁用健谈。我的设备是一加5 (2认同)

nka*_*123 7

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

adb logcat -P ""
Run Code Online (Sandbox Code Playgroud)

或通过设置

setprop ro.logd.filter disable

setprop persist.logd.filter disable 
Run Code Online (Sandbox Code Playgroud)

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

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