Android Log Analysis

Android logs caption

Como desarrollador de Android, todos ustedes saben que el análisis de Logs es una fase del desarrollo y nos encontramos con él de vez en cuando.
Pero el análisis de registros es el principal desafío para el mantenedor de código o el ingeniero de soporte.

Una vez que cualquier producto Android lanzado en el mercado y los clientes comienzan a usarlo. Entonces el escenario real de los errores / problemas comienzan a venir y es el principal trabajo para el ingeniero de soporte / ingeniero de mantenimiento del proyecto para analizar el error / problema con el conjunto proporcionado de los registros.

Primero empezamos con el tipo de registro disponible en el ecosistema Android:-

  • Registro de aplicación
  • Registro del sistema
  • Registro de eventos
  • Registro de radio

El sistema de registro de Android consiste en:

  • un controlador del kernel y búferes del kernel para almacenar mensajes de registro
  • C, clases C++ y Java para hacer entradas de registro y acceder a los mensajes de registro.
  • Logcat (un programa independiente para ver los mensajes de registro )
  • DDMS (capacidad para ver y filtrar los mensajes de registro desde la máquina anfitriona)

Android Log Buffer/container

  • main – el registro principal de la aplicación
  • events – para la información de eventos del sistema
  • radio – para la radio y lainformación relacionada
  • system – un registro para mensajes del sistema de bajo nivel y depuración

Qué mensaje de registro contiene:-

Cada mensaje del registro consta de

  • Una etiqueta que indica la parte del sistema o aplicación de la que procede el mensaje
  • Una marca de tiempo (a qué hora llegó este mensaje)
  • El nivel de registro del mensaje (o prioridad del evento representado por el mensaje) y
  • El mensaje de registro en sí (descripción detallada del error o excepción o información, etc)

Qué contiene cada tipo de registro:-

1. Registro de la aplicación

  • utiliza los métodos de la clase android.util.Log para escribir mensajes de diferente prioridad en el registro
  • Las clases de Java declaran su etiqueta estáticamente como una cadena, que pasan al método de registro
  • El método de registro utilizado indica la «gravedad» del mensaje (o nivel de registro)
  • Los mensajes pueden ser filtrados por etiqueta o prioridad cuando los registros son procesados por herramientas de recuperación (logcat)

2. System log

  • Usa la clase android.util.Slog para escribir un mensaje con diferente prioridad con sus mensajes asociados
  • Muchas clases del framework de Android utilizan el registro del sistema para mantener sus mensajes separados de los mensajes (posiblemente ruidosos) del registro de la aplicación
  • Un mensaje formateado se entrega a través de la librería C/C++ hasta el controlador del kernel, que almacena el mensaje en el buffer apropiado(system buffer)

3. Registro de eventos

  • Los mensajes de registro de eventos se crean utilizando la clase android.util.EventLog, que crea mensajes de registro con formato binario.
  • Las entradas de registro consisten en códigos de etiqueta binarios, seguidos de parámetros binarios.
  • Los códigos de etiqueta de los mensajes se almacenan en el sistema en: /system/etc/event-log-tags.
  • Cada mensaje tiene la cadena para el mensaje de registro, así como los códigos que indican los valores asociados con (almacenados con) esa entrada.

4. Registro de radio

  • Se utiliza para la información relacionada con la radio y el teléfono(módem)
  • Las entradas de registro consisten en un código de etiquetas binarias y un mensaje para la información de la red
  • El sistema de registro dirige automáticamente los mensajes con etiquetas específicas al búfer de radio

Formato de registro en Android

A continuación se muestra el formato de registro común en android

tv_sec tv_nsec priority pid tid tag messageLen Message

tag: etiqueta de registro
tv_sec & tv_nsec: la marca de tiempo de los mensajes de registro
pid: el id de proceso de donde provienen los mensajes de registro
tid: el id del hilo
El valor de la prioridad es uno de los siguientes valores de caracteres, ordenados de menor a mayor prioridad:
V – Verbose (prioridad más baja)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (prioridad más alta, en la que nunca se imprime nada)

Las ubicaciones de los archivos de registro
Hay varios directorios donde se almacenan los registros (incluyendo los de los fallos) y no están estandarizados(i.Es decir, algunos pueden ser específicos de la ROM). Estoy poniendo algunos comunes aquí.

  • /data/anr : Dalvik escribe trazas de pila aquí en ANR, es decir «Application Not Responding» aka «Force-Close»
  • /data/dontpanic : contiene algunos registros de fallos incluyendo trazas
  • /data/kernelpanics :- Almacena registros relacionados con el «kernel panic»
  • /data/tombstones :- puede contener varios archivos tombstone_nn (nn es un número de 0 a 10 y después de 10 vuelve a repetirse)

Herramienta de línea de comandos ‘Log’
Para capturar Logs de los dispositivos android/emulador A continuación se muestra alguna herramienta de línea de comandos. En los proyectos de la vida real, hay aplicaciones/herramientas de captura de registros que se utilizan para capturar los registros en el dispositivo del usuario y lo compartió de nuevo al desarrollador/mantenedor para el análisis.

  • adb logcat (muestra todos los registros de tipo para el sistema androide actual
  • adb logcat -v threadtime (incluirá la fecha y la hora)
  • adb logcat -v threadtime > logfile.txt (Almacena los registros en logfile.txt)

Patrones de filtro útiles
Puede utilizar el siguiente filtro en su comando adb para filtrar los registros. También puede utilizar este filtro para buscar en su archivo de registros (registros proporcionados por el dispositivo de usuario).

  • adb logcat -f <archivo_de_salida> Guardar todos los registros en un archivo
  • adb logcat «*:E» Obtener todos los errores y fatales
  • adb logcat | grep -i «foo.ejemplo.» #obtener todos los registros relacionados con «foo.example.*» tagname
  • adb logcat «application_or_tag_name:*» «*:S» Obtener todos los logs por nombre de aplicación
  • adb logcat -b eventos «gsm_service_state_change» «*:S» Obtener todos los cambios de estado GSM
  • adb logcat -b radio Obtener todos los eventos de Radio

Análisis de logs
Hasta aquí tenemos toda la exposición fundamental del sistema de logs de Android. Ahora el momento de analizar los registros procedentes de su aplicación o usuario final. Aquí podemos dividir el análisis de los registros en dos partes

  1. Debug Log:- archivo de registros que vienen durante el desarrollo y la fase de pruebas
  2. Production Log:- archivo de registros que vienen directamente del usuario final.

Así que adivina cuál es difícil Production one Right? Entonces, ¿cuál es el mejor enfoque para depurar y obtener la información deseada de los registros capturados? Como he discutido anteriormente, podemos hacerlo mediante el uso de

  • «Patrones de filtro útil» y
  • Por el uso de alguna herramienta (ejemplo LogRabit, GoogleLogTool, y SonyLogTool)

Así que en el último análisis de registro de Android es el aprendizaje continuo y la utilización de su proceso de experiencia. Personalmente analicé los registros a través de un filtro relevante y una herramienta con mi experiencia pasada.

Pero una cosa es buena Cada análisis androide (problema de usuario final / registro de errores) le da un nuevo aprendizaje y experiencia. Así que sigue haciendo y disfrutar de su vida como un codificador y mantenedor de android system😎😎😎

Deja una respuesta

Tu dirección de correo electrónico no será publicada.