我不得不说这是个好问题.我检查了logcat的代码,发现了logcat.cpp中过滤器表达式的解析代码.
int android_log_addFilterRule(AndroidLogFormat *p_format,
const char *filterExpression)
{
size_t i=0;
size_t tagNameLength;
android_LogPriority pri = ANDROID_LOG_DEFAULT;
tagNameLength = strcspn(filterExpression, ":");
if (tagNameLength == 0) {
goto error;
}
if(filterExpression[tagNameLength] == ':') {
pri = filterCharToPri(filterExpression[tagNameLength+1]);
if (pri == ANDROID_LOG_UNKNOWN) {
goto error;
}
}
...
return 0;
error:
return -1;
}
关键点是logcat使用strcspn(filterExpression,“:”)来解析一个标记名,所以基本上我担心用logcat过滤带冒号的标签是不可能的.但是,您可以找到其他方法.
我认为eclipse中的DDMS可以使用正则表达式来过滤标记字段,因此如果您愿意,可以使用非常复杂的RE.
"SomeApp\:Something:* *:S"
您甚至可以尝试一些OR功能,例如:
^Something1$|^Something2$
如果您不想使用eclipse,可以尝试使用自己的代码读出日志,并将它们解析为不同的日志记录和日志字段.然后你可以编写一个简单的脚本来过滤你想要的任何东西.希望这可以帮到你.