Logcat允许过滤日志,但它的工作方式如下:定义过滤器和logcat只显示与过滤器匹配的消息。但有没有办法显示所有日志,除了过滤器定义的一些标签?如何使用Android adb logcat通过TAG名称排除某些消息?
回答
如果您正在使用adb logcat
你可以把它管道grep和使用它的倒匹配: 从grep manpage:
V,--invert匹配 反转匹配的意识,选择非匹配线。
例如:
$adb logcat | grep --invert-match 'notshownmatchpattern'
您可以通过使用regular expressions扩展这个。
这里是这样的表达式的例子:
"/^(?:emails|tags|addresses)"
这一个将检查任一给定的发生的,会的grep然后一一列举。
在Eclipse Logcat视图中没有这样的选项。但是,您可以利用日志级别排除日志级别过低的任何消息。例如,将其设置为I(nfo)不会显示D(ebug)和(V)erbose消息。
嗯,我忘了提及我在手机的命令提示符/内部使用它来读取日志。每次我点击一个屏幕时,它都会显示InputReader/InputDispatcher消息,这些消息只是泛滥的屏幕。现在我看到也设置过滤器“InputReader:S InputDispatcher:S”的作品:)感谢您的答案! – Kostas 2011-04-01 09:53:21
您可以从DDMS监视器内的正则表达式输入框和negative look-ahead assertions做到这一点(和Eclipse或Android的工作室),例如我不包括大量的噪音从我的日志有以下几点:
tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient))
(“tag:”不是正则表达式的一部分,但告诉LogCat只应用正则表达式到Tag字段。如果你在保存的过滤器中使用这个技巧,那么只需在“Tag”输入框,并省略“tag:”前缀)
在Android Studio的logcat监视器窗格中,您可以通过打开右上角的下拉菜单(可能会显示“仅显示选定的应用程序”并选择“编辑过滤器配置”)。创建一个新的logcat过滤器并放入^(?!(WifiMulticast
...等。日志标记框中为))
,选中Regex
复选框。
这是我一直在寻找的,非常感谢。 – 2013-04-23 10:04:09
Eclipse LogCat的良好解决方案 – 2013-07-30 13:10:27
我的愿景立即变得模糊! :D – suomi35 2013-11-22 22:27:13
^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
这将排除具有内容窗口管理器,Dalvik的,文本...
tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$
这将排除标签窗口管理器,Dalvik的,...从logcat的
从shell,你可以使用如下命令:
adb logcat AlarmManagerService:S PowerManagerService:S *:V
其中将包含除AlarmManagerService
和PowerManagerService
标记之外的所有日志。
(该:S
代表“沉默”,这意味着什么都不会被打印的标签;在:V
代表,这意味着一切都将被打印的所有其他标签“详细”的Android documentation for logcat有其他选项的详细信息,您可以在过滤器中使用。)
您也可以使用ANDROID_LOG_TAGS
环境变量设置默认过滤器,例如(在bash):
export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V"
如果要排除或在Android Studio中筛选标记名称某些消息,后藤的logcat的窗口=>编辑过滤器配置,并通过日志标签进入下”下面(正则表达式) :“
^(?!(tag1|tag2|tag3|tag4))
注意有没有空格,这是很重要的
这个答案在intellij 15的logcat>编辑过滤器配置中起作用,它带来了一个名为“Create New Logcat Filter”的模式。 – petey 2016-02-23 19:22:50
谢谢。顺便说一句,联想手机有很多垃圾邮件日志消息 – Seagull 2017-06-19 11:42:31
这只能防止具有该标签的日志呈现给日志。监视器仍然会被后台的这些调用所淹没,并将非“tag1 | tag2 | etc”调用推出缓冲区。有没有办法解决这个问题? – TheBestBigAl 2017-07-31 09:57:07
结合正反两方面的前瞻更强大的过滤功能。
实施例:在第一嵌套括弧
(?=(AndroidRuntime|Main|RandomTag))(?!(Audio))
标签都包括在内。
第二个标记被排除。
恕我直言,这是更全面的过滤日志的方式。 – 2017-03-15 13:31:16
- 1. Android设备监视器中的Logcat只显示某些消息
- 2. 无法解释某些logcat消息
- 3. adb logcat按包名称筛选
- 4. 如何为adb logcat做名称过滤器?
- 5. 如何使用adb logcat
- 6. adb logcat:增加最大消息长度
- 7. eclipse中的Android LogCat:如何过滤LogCat消息?
- 8. Android不显示logcat消息
- 9. adb shell带包名称的Logcat
- 10. 某些SMS消息如何传输发件人名称?
- 11. 如何logcat消息保存
- 12. 如何排除顶部列表中的某些名称
- 13. 如何通过Android中的应用程序包名称实际过滤logcat?
- 14. 在CMD中使用adb logcat时排除标记字符串
- 15. 如何在Android应用程序中收集LogCat消息
- 16. android DDMS logcat过滤器名称
- 17. 如何转储Android logcat withtout ADB?
- 18. Android Logcat错误消息。
- 19. Android logcat无限消息
- 20. 通过java通过wifi从adb获取logcat
- 21. Android ADB Logcat--显示完整的logcat
- 22. 通过应用程序过滤在ACRA中的LogCat而不使用TAG
- 23. 如何用svn2git排除某些分支?
- 24. 找到通过哪个消息被使用的交换名称
- 25. 如何通过XSLT消除所有<TAG/>和所有attribute =“”?
- 26. 如何退出adb logcat
- 27. 如何使用before_filter,通过删除某些控制器的白名单
- 28. XPATH通过通配符排除某些网址
- 29. Rails - 如何在某些事件上给用户通知消息
- 30. 名称验证是否可以排除某些特殊字符
谢谢,这就像一个魅力:) – Kostas 2011-04-01 09:51:30
是的,认为如此:) – 2011-04-01 09:54:43
这是适用于Linux或Windows的呢? – zest 2012-12-18 13:52:29