¿Log.isLoggable devuelve valores erróneos?
Cuando estaba escribiendo un contenedor de registro para mi aplicación Android me di cuenta de un comportamiento extraño de los androides Log.isLoggable método. Ejecutar código siguiente:
final String TAG = "Test"; Log.v(TAG, "verbose is active: " + Log.isLoggable(TAG, Log.VERBOSE)); Log.d(TAG, "debug is active: " + Log.isLoggable(TAG, Log.DEBUG)); Log.i(TAG, "info is active: " + Log.isLoggable(TAG, Log.INFO)); Log.w(TAG, "warn is active: " + Log.isLoggable(TAG, Log.WARN)); Log.e(TAG, "error is active: " + Log.isLoggable(TAG, Log.ERROR));
Produce la siguiente salida LogCat:
- ¿Cómo supervisar constantemente el archivo LogCat?
- ¿Cómo puedo mostrar los archivos de registro, System.out.println (), en la prueba de Android?
- Habilitar registro DEBUG en Blu-R1 HD (teléfono Amazon)
- Adb logcat cordova android 4
- Android Studio jdwp: proceso Registro entrante
VERBOSE/Test(598): verbose is active: false DEBUG/Test(598): debug is active: false INFO/Test(598): info is active: true WARN/Test(598): warn is active: true ERROR/Test(598): error is active: true
¿Por qué recibo verbose y debug no está activo aunque produjo estas salidas usando el registro detallado y de depuración?
- ¿Por qué logcat no muestra nada en mi Android?
- ¿Cómo depurar un broadcastreceiver?
- Android.util.Log al publicar - ¿qué puedo hacer / no hacer
- ¿Habilitar el registro interno en el emulador de Android WebKit?
- Comprensión de bloqueos y ANR con Proguard habilitado
- ¿Error o función en android.util.Log? - Log.isLoggable (DEBUG) = false pero Log.d () no está deshabilitado
- Android de depuración con Logcat y Emulador. ¿Es posible?
- Android Runtime Logcat solo obtiene la instancia actual
Todos los niveles de registro se escriben en logcat independientemente de cuál sea el nivel de registro actual. El método isLogabble()
se puede utilizar como una optimización para sus aplicaciones para evitar el envío de instrucciones de registro innecesarias a logcat. También puede utilizar el comando adb logcat
para filtrar un subconjunto de los niveles de registro incluso si el registro está configurado en verboso (consulte https://developer.android.com/studio/debug/am-logcat.html ).
Si lee la información de Log.isLoggable () , notará que el nivel de registro predeterminado es INFO
. Cualquier cosa menos que eso ( DEBUG
y VERBOSE
) hará que este método devuelva false
. Esta es la razón por la salida resultante muestra estos dos como false
.
Todas las llamadas de Log.*
se registran en el logcat. Llamar a Log.isLoggable()
es simplemente una forma de sintonizar el registro. No es necesario. Normalmente, llamará a Log.isLoggable()
antes de la llamada de Log.*
real Log.*
Para determinar si se debe registrar o no.
Usted puede ajustar su registro por TAG
si lo desea, ya sea con un archivo de apoyo o vía adb. Lo bueno de esto es que puede activar dinámicamente el registro hasta / abajo / apagado para cada TAG
individual en su aplicación sin la necesidad de comentar manualmente las líneas de registro, o la implementación de sus propios controles.
Deberías usar
if (Log.isLoggable(TAG, Log.VERBOSE)) { Log.v(TAG, "verbose is active: " + Log.isLoggable(TAG, Log.VERBOSE)); }
LOG siempre se imprimirá en el logcat sin importar lo que Log.isloggable () devuelva.