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


Niveles de registro de Android

Tengo un poco de dificultad para configurar el registro de Android. Así es como se ve mi código:

if (Log.isLoggable("MY_TAG", Log.VERBOSE)) { Log.v("MY_TAG", "Here's a log message"); } 

Bastante simple, ¿verdad?

Sin embargo, estoy teniendo bastante dificultad para obtener Log.isLoggable("MY_TAG", Log.VERBOSE) para devolver true.

Por http://developer.android.com/reference/android/util/Log.html , intenté agregar un archivo local.prop al directorio / data / que se parece a esto:

 log.tag.MY_TAG=VERBOSE 

Pero no hay suerte. También intenté:

 System.setProperty("log.tag.MY_TAG", String.valueOf(Log.VERBOSE)); 

Pero eso tampoco funciona.

¿Alguna idea sobre lo que estoy haciendo mal aquí? Estoy ejecutando Android 2.1-update1 en un Nexus 1 si eso hace alguna diferencia.

  • Cómo ver los troncos de Slog
  • ¿Cómo usualmente registra entradas en el registro? (androide)
  • Escribir datos de logcat de android en un archivo
  • Niveles de registro de Android
  • Android: establece la longitud máxima de los mensajes de logcat
  • Redireccionar Salida de registro a sdcard en el teléfono del cliente
  • Mostrar mensajes de registro en la pantalla para la aplicación de Android
  • Registros de Android 'GC_EXTERNAL_ALLOC' 'GC_FOR_MALLOC'
  • 3 Solutions collect form web for “Niveles de registro de Android”

    Tratar

     adb shell setprop log.tag.MyAppTag VERBOSE 

    Parece que las versiones posteriores de Android quieren que /data/local.prop sea ​​escribible sólo por root. El comando de adb push parece inicialmente crear archivos con conceder a todos acceso de lectura / escritura (porque la máscara de archivo predeterminada es 777 ). Android, sabiamente, ignora /data/local.prop ya que esto puede ser un riesgo de seguridad.

    Sólo he experimentado con Android 2.3.3 y 4.1.2. El primero no tiene problemas con la lectura de un local.prop que es mundo escribible, mientras que el último parece silenciar ignorar el contenido del archivo.

    Creación de un archivo local.prop como se describe en la pregunta original:

     log.tag.MY_TAG=VERBOSE 

    Y luego empujarlo en el dispositivo como sigue parece hacer el truco:

     adb push local.prop /data/local.prop adb shell chmod 644 /data/local.prop adb shell chown root.root /data/local.prop adb reboot 

    Puede comprobar que los valores de local.prop han leído ejecutando:

     adb shell getprop | grep log.tag 

    Así que en resumen:

    • /data/local.prop sólo se lee durante el arranque.
    • Las versiones posteriores de Android parecen requerir que los permisos en el archivo /data/local.prop se establezcan correctamente o no se leerán. El archivo debe ser escribible sólo por root.

    Usando el adb shell setprop log.tag.MyAppTag VERBOSE también funciona. El problema es que los valores de propiedad se pierden después de un reinicio.

    Un objetivo importante es no enviar una aplicación de producción con una tonelada de llamadas de registro dejado en ella, aumentando su tamaño, e incluso, posiblemente, incluso el impacto de su rendimiento.

    Para hacer esto, mi recomendación es poner estas constantes en la parte superior de cada clase que va a tener llamadas de registro:

     static final boolean DEBUG = false; static final String TAG = "<MyClass>" 

    Ahora, donde se registra, haga lo siguiente:

     if (DEBUG) Log.v(TAG, "Something"); 

    Encienda los registros cambiando la constante DEBUG a true. (Si lo deseas, podrías tener una clase con estas estadísticas para que todo el código de tu aplicación use … Eso tiene sentido para una pequeña aplicación, pero a medida que las cosas se hacen grandes, es bueno decidir qué partes activar el registro).

    Al hacer esto, al crear su aplicación con DEBUG = false , todo su código de registro no sólo no se ejecuta, sino que se quita totalmente de su aplicación. Esto es bueno porque le permite dejar un registro bastante extenso en su código para que se encienda cuando lo necesite, sin preocuparse de cómo afectará el tamaño de su aplicación de envío. Básicamente sólo tirar registros en donde lo necesite y no se preocupe por dejarlos en.

    Este es el enfoque que una gran parte de la estructura de Android tiene. Por ejemplo, el ActivityService Manager .

    Esto tiene las constantes en la parte superior, y varias líneas de registro rociado en todo sobre la base de ellos. (Y un montón de otras constantes de sub-depuración para varios aspectos de ella, ya que este archivo es ridículamente estúpidamente grande.)

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