Quiero leer y reaccionar a los registros de logcat dentro de mi aplicación.
Encontré el siguiente código:
try {
Process process = Runtime.getRuntime().exec("logcat -d");
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
StringBuilder log=new StringBuilder();
String line = "";
while ((line = bufferedReader.readLine()) != null) {
log.append(line);
}
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(log.toString());
}
catch (IOException e) {}
De hecho, este código devuelve los registros de logcat que se realizaron hasta que se inició la aplicación:
Pero, ¿es posible escuchar continuamente incluso nuevos registros de logcat?
android
logcat
android-logcat
David
fuente
fuente
Respuestas:
Puede seguir leyendo los registros, simplemente eliminando la marca "-d" en su código anterior.
La bandera "-d" indica a logcat que muestre el contenido del registro y salga. Si quita la bandera, logcat no terminará y seguirá enviando cualquier línea nueva que se le agregue.
Solo tenga en cuenta que esto puede bloquear su aplicación si no está diseñada correctamente.
buena suerte.
fuente
Puede borrar su logcat con este método que estoy usando para borrar después de escribir logcat en un archivo para evitar líneas duplicadas:
fuente
Con las corrutinas y las bibliotecas oficiales lifecycle-livedata-ktx y lifecycle-viewmodel-ktx , es así de simple:
Uso
fuente
WebView
lugar deTextView
.A continuación, se incluye una combinación / introducción rápida que se puede utilizar para capturar todos los elementos de registro actuales o todos los nuevos (desde una última solicitud).
Debe modificar / ampliar esto, porque es posible que desee devolver un flujo continuo en lugar de un LogCapture.
El "Manual" de Android LogCat: https://developer.android.com/studio/command-line/logcat.html
En su proyecto que realiza el registro de actividad:
Cuando desee capturar todo lo que inició sesión a través de "Logger"
Cuando tienes hambre y quieres comer más troncos
Puede obtener la captura como una cadena con
O puede obtener los elementos de registro de la captura con
No existe un método estático exacto para capturar claves de registro externas, pero no obstante, existe una forma
El uso de lo anterior también le permitirá solicitar
Logger.this.nextCapture
la captura extranjera.fuente
git.hsusa.core.log.controller.AndroidLogController.java
; Es posible que desee utilizar mi biblioteca hscore en lugar de esta solución "rápida y sucia". Para iniciar sesión con hscore, usaría:public final static SmartLogContext log = SmartLog.getContextFor("MyLogContext");
para comenzar. Funciona prácticamente de la misma manera con una mejor API. Puede usar mi rastreador de problemas de git hub si necesita CUALQUIER ayuda con eso.La bandera "-c" borra el búfer.
-c Borra (vacía) todo el registro y sale.
fuente
Estoy usando esto en mi aplicación y funciona. Y puede usar el código anterior en Timer Task para que no detenga su hilo principal
fuente