Android: Filtrar Logcat por etiqueta mediante un regex

Cuando registra mis Tags siempre se parecen a esto:

com.myapp.SomeActivity 

Para cada instrucción de registro agrego la primera parte "com.myapp". A la etiqueta de la clase que está realizando la llamada de registro. Por ejemplo:

 MyActivity extends Activity{ private static final String TAG = "MyActivity"; public void someMethod(){ LogWrapper.e(TAG, "Something is wrong here."); } } 

Mi clase LogWrapper básicamente hace lo siguiente

 public class LogWrapper { private static final String applicationTAG = "com.myapp."; public static void e(String classTag, String message){ Log.e(applicationTAG + classTag, message); } } 

Así que todo lo que hago es prepend una etiqueta estática a la etiqueta de la clase. La razón es que quiero filtrar la salida de logcat por las sentencias de registro que escribe mi aplicación y evitar que se estorbe mi archivo de registro con registros del sistema u otras aplicaciones.

De ahí surgió la obtención de los Logs como este:

 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); } 

Sin embargo, termino con un archivo de registro vacío. Lo que me hace pensar que la expresión regex "com.myapp .: I" no funciona. También intenté omitir el asterix ( ) pero eso no funciona. Sin embargo, si utilizo "*: I" que funciona.

¿Qué me hace pensar, si sólo es posible filtrar por un nombre de etiqueta completa? ¿Hay una manera que puedo conseguir el asimiento de un registro que sea filtrado por "com.myapp." ?

Supongo que el plan B sería que en el bucle while podría comprobar si la línea contiene mi etiqueta y adjuntarla sólo si ese es el caso, pero me gustaría evitar que …

Ok para resolver el problema que dio a la solución más elegante (y aún desconocido) para el Plan BI sugerido en mi primer post. Utilizo el siguiente regex para filtrar cada línea del archivo de registro que obtuve usando el comando logcat -d -v time *: I (ejecutado mediante Runtime.getRuntime (). Exec (command)):

 .*([DIWE]{1}/com.myapp.).* 

La regex anterior coincide con declaraciones de registro como esta:

 I/com.myapp.MyClass Crashed and did not recover - too bad. 

El [DEWI] significa que, el nivel de registro debe ser D (ebug), E (rror), W (arning) o I (nfo) para que la regex coincida. Si también desea extraer el registro V (erbose), simplemente añada una "V".

  • Android - formato json string en la salida logcat de adb
  • No se puede iniciar la aplicación para la intención de difusión
  • Android OCR utilizando tess-dos un tenedor de tesseract
  • Android Studio - Logcat que muestra "ningún dispositivo conectado" y "ninguna aplicación debugable"
  • ¿Cómo filtrar el logcat de Android por aplicación?
  • Modificación de archivos .smali
  • Guardar Logcat en un archivo de texto en el dispositivo Android
  • Habilitar registro DEBUG en Blu-R1 HD (teléfono Amazon)
  • No se encontraron métodos de depuración de logcat de Android
  • WARN in logcat ResourceType: Para el recurso ..., el índice de entrada (...) está más allá del tipo entryCount (1)
  • GetExtractedText en la advertencia de InputConnection inactiva en android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.