gpt4 book ai didi

Android 亚行 Logcat : tag with colon

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:57:21 27 4
gpt4 key购买 nike

如何过滤 adb logcat 中带有冒号的标记的输出(仅使用 logcat,不使用 grep 或相同的工具)?

例如:

adb logcat "SomeApp:Something:* *:S"

其中 "SomeApp:Something" 是指定的标签。

我知道这个符号不应该用在标签中,但不幸的是它是第三方代码,不是我们的...

提前致谢!

最佳答案

我不得不说这是个好问题。查看了logcat的代码,发现logcat.cpp中的filter expression的解析代码。

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,可以尝试用自己的代码读出日志,解析成不同的日志记录和日志字段。然后你可以编写一个简单的脚本来过滤你想要的任何东西。希望这可以帮到你。

关于Android 亚行 Logcat : tag with colon,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15065497/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com