2012-07-20 25 views
12

Estoy usando un dispositivo Samsung Galaxy S3 para desarrollo y mi aplicación usa la cámara. En el logcat, hay una salida realizada por el sistema nativo con la etiqueta Camera-JNI que se escribe en logcat como 20 veces por segundo, haciendo que el logcat limpie las entradas más antiguas muy rápido.Deshabilitar las salidas de logcat nativas en Android

¿Es posible desactivar los registros de aplicaciones o registros del sistema ya instalados para evitar esto? Los filtros no funcionan, ya que el logcat aún está lleno y las líneas aún se están etiquetando.

Gracias.

EDITAR

La documentación says esto:

Puede cambiar el nivel predeterminado mediante el establecimiento de una propiedad del sistema: setprop log.tag.<YOUR_LOG_TAG> <LEVEL>. También puede crear un archivo local.prop que contenga lo siguiente: log.tag.<YOUR_LOG_TAG>=<LEVEL> y colocarlo en /data/local.prop.

EDIT 2

ya lo hacía antes (enraizamiento del dispositivo, empujando el archivo local.prop a/datos y reiniciar) pero la etiqueta sigue apareciendo

+0

Esto no responde su pregunta directamente, pero puede aumentar el número de líneas en el búfer LogCat (Preferencias -> Android -> LogCat -> Número de mensajes LogCat en el búfer) – curioustechizen

+1

'local.prop' el archivo debe colocarse en el directorio '/ data' (es decir, el directorio" data "en la raíz del sistema de archivos Android), así:' adb push local.prop/data'. Pero en la mayoría de los casos no podrá reemplazar/modificar ese archivo hasta que rootee el teléfono. – Idolon

+0

@Idolon Arreglé el teléfono, creé un archivo 'local.prop' con esta línea:' log.tag.Camera-JNI = SUPPRESS' y lo empujé a la carpeta '/ data' pero todavía veo el registro con ese etiquetar en el logcat así que supongo que los documentos están equivocados –

Respuesta

1

Puede intentar algo así como adb shell setprop log.tag.Camera-JNI ERROR. Si no funciona, basta con filtrar el registro o volcarlo en un archivo y usar grep para encontrar las líneas que le interesan o filtrar la cámara con grep -v Camera-JNI.

+0

El primero no funcionó, intenté con adb shell setprop log.tag.Camera-JNI SUPPRESS sin ningún efecto. El segundo es simplemente ocultar las etiquetas que no desea ver, pero esto no impide que el logcat se llene rápidamente, descartando líneas viejas en el Eclipse Logcat Viewer cuando está lleno –

+2

Bueno, en ese caso, ya que este no es tu código, en realidad no puedes hacer nada más que: 1) quejarte a Samsung, o 2) instalar una ROM personalizada que no haga esto. –

+0

No estoy seguro si es posible o no, pero una tercera opción sería modificar el [código Eclipse/DDMS] (http://omapzoom.org/?p=platform/sdk.git;a=blob; f = ddms/libs/ddmuilib/src/com/android/ddmuilib/logcat/LogCatReceiver.java; hb = HEAD) para que pueda filtrar las entradas no deseadas sin llenar su búfer. – Joe

7

puedo ver la siguiente examinando el código fuente de Android (2.3.x):

Ejecución

shell setprop log.tag.XYZ 

no funcionará aquí (frameworks/base/core/jni/android_hardware_Camera.cpp), ya que la tala se está haciendo uso de la macro LOGV() . Este método de registro no usa propiedades para detectar si algún componente desea deshabilitar el registro. Eso es lo más lejos que puedo rastrear las llamadas a través del código de Android.

Así, utilizando setprop(...) no funcionará para deshabilitar el registro de un componente del sistema androide pero debería funcionar cuando los registros provienen de aplicaciones de usuarios, etc. escritos en Java que utilizan base/core/java/android/util/Log.java y frameworks/base/core/jni/android_util_Log.cpp para iniciar la sesión. Mi suposición es que android_util_Log_isLoggable() es lo que se está utilizando para filtrar.

IMHO No veo otra alternativa que construir desde la fuente de su dispositivo y deshabilitar las macros LOGV en el código de la cámara que está utilizando.

0

Si quieres ver las etiquetas específicas utilizan:

logcat -s YourTag:* SecondTag:* ThirdTag:* ... 

También puede utilizar adb logcat

Sólo especifique <TAG>:* tantas veces como desee para filtrar las etiquetas que necesita.

Ejemplo:adb logcat -s AndroidRuntime:* MyApp:* filtros AndroidRuntime y MyApp etiquetas. Entonces, ve todas las excepciones no detectadas (bloqueos) y también todos los registros de su aplicación.

Cuestiones relacionadas