Po zalogowaniu mój Tagi zawsze wyglądać tak: „com.myapp”Android: Filtr Logcat przez tag używając regex
com.myapp.SomeActivity
dla każdej instrukcji dziennika ja poprzedzić pierwszą część do znacznika klasy, która wykonuje wywołanie dziennika. Na przykład:
MyActivity extends Activity{
private static final String TAG = "MyActivity";
public void someMethod(){
LogWrapper.e(TAG, "Something is wrong here.");
}
}
Moja klasa LogWrapper zasadzie robi następującą
public class LogWrapper {
private static final String applicationTAG = "com.myapp.";
public static void e(String classTag, String message){
Log.e(applicationTAG + classTag, message);
}
}
Więc wszystko co robię jest dołączana statyczny tag do tagu klasy za. Powodem jest to, że chcę filtrować dane wyjściowe logcat za pomocą instrukcji Log, które moja aplikacja zapisuje, i aby nie zaśmiecać mojego pliku dziennika logami z systemu lub innych aplikacji.
Stąd że pojawił się z uzyskaniem logi tak:
String command = "logcat -d -v time com.myapp.*:I *:S"
Process process = Runtime.getRuntime().exec(command);
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
log.append(StringUtils.NEW_LINE);
}
Jednakże, w końcu z pustym dzienniku. Co czyni mnie rzeczą wyrażenia regex "com.myapp. :" Nie działa. Próbowałem również pominąć asterix (), ale to nie działa. Jednak jeśli użyję "*: I", który działa.
Co mnie zastanawia, czy możliwe jest filtrowanie wyłącznie według pełnej nazwy znacznika? Czy istnieje sposób, w jaki mogę uzyskać dziennik, który jest filtrowany przez "com.myapp". ?
Chyba Plan B byłoby to, że w pętli while mogę sprawdzić, czy mój wiersz zawiera znacznik i dołączyć go tylko, czy to przypadek, ale naprawdę chciałbym tego uniknąć ...