Ric*_*usa 5 android adb logcat
如何过滤adb logcat带有冒号的标记的输出(仅使用logcat,不使用grep或使用相同的工具)?
例如:
adb logcat "SomeApp:Something:* *:S"
Run Code Online (Sandbox Code Playgroud)
"SomeApp:Something"指定的标签在哪里.
我知道这个符号不应该用在标签中,但不幸的是它是第三方代码,而不是我们的......
先感谢您!
我不得不说这是一个好问题。我检查了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;
}
Run Code Online (Sandbox Code Playgroud)
关键点是logcat使用strcspn(filterExpression, ":")来解析标记名,所以基本上我担心使用logcat不可能过滤带有冒号的标记。但是,您可以找到其他方法。
我认为eclipse中的DDMS可以使用正则表达式来过滤标签字段,因此如果您愿意,您可以使用非常复杂的RE。
"SomeApp\:Something:* *:S"
Run Code Online (Sandbox Code Playgroud)
您甚至可以尝试一些 OR 功能,例如:
^Something1$|^Something2$
Run Code Online (Sandbox Code Playgroud)
如果你不想使用eclipse,你可以尝试通过自己的代码读出日志,并解析成不同的日志记录和日志字段。然后你可以编写一个简单的脚本来过滤你想要的任何内容。希望这可以帮到你。
| 归档时间: |
|
| 查看次数: |
1232 次 |
| 最近记录: |