Devo dire che è una buona domanda. Ho controllato il codice per logcat e ho scoperto che il codice di analisi per l'espressione del filtro in 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;
}
Il punto chiave è l'uso logcat strcspn (filterExpression, ":") per analizzare un TagName, in modo sostanzialmente temo sia impossibile filtrare un tag con i due punti utilizzando logcat. Tuttavia, puoi trovare altri modi.
Penso che il DDMS in eclissi possa usare l'espressione regolare per filtrare il campo del tag, quindi se lo desideri puoi andare con RE molto complicati.
"SomeApp\:Something:* *:S"
Si può anche provare alcune o funzionalità come:
^Something1$|^Something2$
Se non si desidera utilizzare Eclipse, si può provare a leggere il registro per il proprio codice, e analizzare in diversi record di registro e campo log. Quindi puoi scrivere un semplice script per filtrare quello che vuoi. Spero che questo possa aiutarti.
Wow, ora ho notato che dopotutto era solo una parte del problema. In effetti, l'espressione che hai fornito sembra funzionare, ma prova ad aggiungere una "M" dopo i due punti, ad esempio: "adb logcat" SomeApp \\: MSomething: * *: S "'! Si creerà un errore con i dettagli: 'Espressione filtro non valida 'SomeApp \: MSomething: * *: S'' (e il Tag che sto cercando di filtrare ha una' M 'dopo il colon ... Probabilmente un bug ? –
Non ne siamo abbastanza sicuri.Il problema è ancora lì utilizzando una barra rovesciata come "SomeApp \: MSomething: * *: S"? Se è un'altra lettera come "A" e "M", il problema è ancora lì? – StarPinkER
Sì, la "SomeApp: Something: *" sembra essere accettata perché la "S" in "Something" viene intercettata come livello di verbosità (cioè Silent, in questo caso), quindi nessuno di questi funziona, ma probabilmente non come previsto : 'V, D, I, W, E, F' –