Quando si accede mio Tag sembrare sempre così: "com.myapp"Android: Filtro Logcat per tag utilizzando un'espressione regolare
com.myapp.SomeActivity
Per ogni dichiarazione di registro ho anteporre la prima parte al tag della classe che sta effettuando la chiamata di registro. Per esempio:
MyActivity extends Activity{
private static final String TAG = "MyActivity";
public void someMethod(){
LogWrapper.e(TAG, "Something is wrong here.");
}
}
La mia classe LogWrapper fondamentalmente fa il seguente
public class LogWrapper {
private static final String applicationTAG = "com.myapp.";
public static void e(String classTag, String message){
Log.e(applicationTAG + classTag, message);
}
}
Quindi tutto quello che faccio è anteporre un tag statico per tag della classe. Il motivo è che voglio filtrare l'output logcat dalle istruzioni Log scritte dalla mia applicazione e per evitare di ingombrare il mio file di log con i log dal sistema o da altre applicazioni.
Quindi ho fornito ottenere i registri simili:
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);
}
Tuttavia, risulterebbe un file di registro vuoto. Il che mi fa sembrare l'espressione regolare "com.myapp. : I" non funziona. Ho anche provato ad omettere l'asterisco () ma questo non funziona. Comunque se uso "*: I" funziona.
Ciò che mi meraviglia, se sia possibile filtrare solo con un nome tag completo? C'è un modo per ottenere un registro filtrato da "com.myapp". ?
Credo piano B sarebbe che nel ciclo while ho potuto verificare se la linea contiene il mio tag e aggiungerlo solo se questo è il caso, ma mi piacerebbe davvero evitare che ...