Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿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:

 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?
  • Habilitar registro DEBUG en Blu-R1 HD (teléfono Amazon)
  • Android de depuración con Logcat y Emulador. ¿Es posible?
  • Android.util.Log al publicar - ¿qué puedo hacer / no hacer
  • Adb logcat cordova android 4
  • 4 Solutions collect form web for “¿Log.isLoggable devuelve valores erróneos?”

    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.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.