5

コロンが含まれるタグの出力をフィルタリングするにはどうすればよいですかadb logcat(logcat のみを使用しgrep、または同一のツールを使用しないでください)。

例えば:

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

"SomeApp:Something"指定されたタグです。

この記号をタグで使用すべきではないことはわかっていますが、残念ながらこれはサードパーティのコードであり、私たちのものではありません...

前もって感謝します!

4

2 に答える 2

3

いい質問だと言わざるを得ません。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を使用したくない場合は、独自のコードでログを読み取り、それらを別のログレコードとログフィールドに解析してみてください。次に、必要なものをフィルタリングするための簡単なスクリプトを作成できます。これがお役に立てば幸いです。

于 2013-02-25T11:26:08.457 に答える