2011-04-01 84 views

回答

44

如果您正在使用adb logcat你可以把它管道grep和使用它的倒匹配: 从grep manpage

V,--invert匹配 反转匹配的意识,选择非匹配线。

例如:

$adb logcat | grep --invert-match 'notshownmatchpattern' 

您可以通过使用regular expressions扩展这个。

这里是这样的表达式的例子:

"/^(?:emails|tags|addresses)" 

这一个将检查任一给定的发生的,会的grep然后一一列举。

+0

谢谢,这就像一个魅力:) – Kostas 2011-04-01 09:51:30

+0

是的,认为如此:) – 2011-04-01 09:54:43

+0

这是适用于Linux或Windows的呢? – zest 2012-12-18 13:52:29

0

在Eclipse Logcat视图中没有这样的选项。但是,您可以利用日志级别排除日志级别过低的任何消息。例如,将其设置为I(nfo)不会显示D(ebug)和(V)erbose消息。

+0

嗯,我忘了提及我在手机的命令提示符/内部使用它来读取日志。每次我点击一个屏幕时,它都会显示InputReader/InputDispatcher消息,这些消息只是泛滥的屏幕。现在我看到也设置过滤器“InputReader:S InputDispatcher:S”的作品:)感谢您的答案! – Kostas 2011-04-01 09:53:21

198

您可以从DDMS监视器内的正则表达式输入框和negative look-ahead assertions做到这一点(和Eclipse或Android的工作室),例如我不包括大量的噪音从我的日志有以下几点:

tag:^(?!(WifiMulticast|WifiHW|MtpService|PushClient)) 

(“tag:”不是正则表达式的一部分,但告诉LogCat只应用正则表达式到Tag字段。如果你在保存的过滤器中使用这个技巧,那么只需在“Tag”输入框,并省略“tag:”前缀)

在Android Studio的logcat监视器窗格中,您可以通过打开右上角的下拉菜单(可能会显示“仅显示选定的应用程序”并选择“编辑过滤器配置”)。创建一个新的logcat过滤器并放入^(?!(WifiMulticast ...等。日志标记框中为)),选中Regex复选框。

+0

这是我一直在寻找的,非常感谢。 – 2013-04-23 10:04:09

+0

Eclipse LogCat的良好解决方案 – 2013-07-30 13:10:27

+4

我的愿景立即变得模糊! :D – suomi35 2013-11-22 22:27:13

25

^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$

这将排除具有内容窗口管理器,Dalvik的,文本...

tag:^(?!.*(WindowManager|dalvik|Environment|DataRouter|AlarmManager)).*$

这将排除标签窗口管理器,Dalvik的,...从logcat的

23

从shell,你可以使用如下命令:

adb logcat AlarmManagerService:S PowerManagerService:S *:V 

其中将包含除AlarmManagerServicePowerManagerService标记之外的所有日志。

(该:S代表“沉默”,这意味着什么都不会被打印的标签;在:V代表,这意味着一切都将被打印的所有其他标签“详细”的Android documentation for logcat有其他选项的详细信息,您可以在过滤器中使用。)

您也可以使用ANDROID_LOG_TAGS环境变量设置默认过滤器,例如(在bash):

export ANDROID_LOG_TAGS="AlarmManagerService:S PowerManagerService:S *:V" 
+0

这是一个很好的建议,可以在没有管道的命令行下运行。你应该更新你的答案imho来解释“:S”部分将只为命名组件发出严重消息(这几乎不会发生)。再次,好的答案。人们应该投这个...... – 2013-07-12 16:30:43

+1

@ChrisMarkle根据文档'S'是'沉默'。正如你所建议的,我已经更新了解释这个的答案。 – Rich 2013-07-12 21:28:21

+1

您可以使用环境变量ANDROID_LOG_TAGS以相同方式过滤logcat输出。我发现它总是设置为排除一些更加垃圾的进程是很有用的。 – emidander 2014-02-06 21:13:51

63

如果要排除或在Android Studio中筛选标记名称某些消息,后藤的logcat的窗口=>编辑过滤器配置,并通过日志标签进入下”下面(正则表达式) :“

^(?!(tag1|tag2|tag3|tag4)) 

注意有没有空格,这是很重要的

+0

这个答案在intellij 15的logcat>编辑过滤器配置中起作用,它带来了一个名为“Create New Logcat Filter”的模式。 – petey 2016-02-23 19:22:50

+0

谢谢。顺便说一句,联想手机有很多垃圾邮件日志消息 – Seagull 2017-06-19 11:42:31

+0

这只能防止具有该标签的日志呈现给日志。监视器仍然会被后台的这些调用所淹没,并将非“tag1 | tag2 | etc”调用推出缓冲区。有没有办法解决这个问题? – TheBestBigAl 2017-07-31 09:57:07

12

结合正反两方面的前瞻更强大的过滤功能。

实施例:在第一嵌套括弧

(?=(AndroidRuntime|Main|RandomTag))(?!(Audio)) 

标签都包括在内。

第二个标记被排除。

+0

恕我直言,这是更全面的过滤日志的方式。 – 2017-03-15 13:31:16