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:

  • ¿Cuál es la diferencia entre argumento "int" y "long" en onItemClick en Android
  • Cómo dar estilo a PopupMenu?
  • Copia de archivo de base de datos a sdcard en android
  • Detección de objetos para android con tesseract o OpenCV
  • ¿Cómo puedo obtener la fecha actual en Android?
  • Barra de herramientas Sugerencias de búsqueda
  •  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?

  • OpenCV Native Samples no están construyendo
  • Copia profunda de un Drawable
  • Declare EditText como TextView en Android
  • Ejemplo de Android JSoup
  • Cómo obtener la historia y los marcadores de Chrome en Android Marshmallow (API> = 23)?
  • Carpeta de Android KitKat 4.4 en la tarjeta sd
  • 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.