Como um desenvolvedor Android, todos vocês sabem que a análise de Logs é uma fase de desenvolvimento e nós a encontramos de tempos em tempos.
But Log Analysis é o principal desafio para o mantenedor de código ou Engenheiro de Suporte.
Once Qualquer produto Android lançado no mercado e os clientes começam a usá-lo. Então bugs/ problemas reais do cenário começam a chegar e é o principal trabalho para o Engenheiro de Suporte/ Engenheiro de manutenção do Projeto analisar o Bug/ problema com o conjunto de logs fornecidos.
Primeiro Começamos com o tipo de Log disponível no Android Eco-system:-
- Log de aplicação
- Log de sistema
- Log de evento
- Log de rádio
Sistema de log de andróide consiste em:
- a driver do kernel e buffers do kernel para armazenar mensagens de log
- C, classes C++ e Java para fazer entradas de log e acessar as mensagens de log.
- Logcat (um programa autónomo para visualizar mensagens de log)
- DDMS (capacidade para visualizar e filtrar as mensagens de log da máquina anfitriã)
Buffer/contentor de log android
- main – o log da aplicação principal
- eventos – para informação de eventos do sistema
- rádio – para rádio e telefone…informação relacionada
- sistema – um log para mensagens de sistema de baixo nível e depuração
O que contém a mensagem de log:-
Cada mensagem no log consiste em
- Uma etiqueta indicando a parte do sistema ou aplicação de onde veio a mensagem
- Um carimbo de data/hora (a que horas chegou esta mensagem)
- O nível de log de mensagens (ou prioridade do evento representado pela mensagem) e
- A própria mensagem de log (descrição detalhada do erro ou exceção ou informação etc)
O que cada tipo de log contém:-
1. Log de aplicação
- utilizar android.util.Métodos de classes de log para escrever mensagens de prioridade diferente no log
- As classes Java declaram sua tag estaticamente como uma string, que passam para o método de log
- O método de log usado indica a mensagem “severidade” (ou nível de log)
- As mensagens podem ser filtradas por tag ou prioridade quando os logs são processados por ferramentas de recuperação (logcat)
2. Log do sistema
- Utilizar o android.util.Classe slog para escrever uma mensagem com prioridade diferente com suas mensagens associadas
- Muitas classes de framework Android utilizam o log do sistema para manter suas mensagens separadas de (possivelmente ruidosas) mensagens de log da aplicação
- Uma mensagem formatada é entregue através da biblioteca C/C++ até o driver do kernel, que armazena a mensagem no buffer (buffer do sistema)
3. Event log
- Event logs são criados usando a classe android.util.EventLog, que cria mensagens de log em formato binário.
- Entradas de log consistem em códigos de tag binários, seguidos por parâmetros binários.
- Os códigos de tag da mensagem são armazenados no sistema em: /system/etc/event-log-tags.
- Cada mensagem tem a string para a mensagem de log, assim como códigos indicando os valores associados a (armazenados com) essa entrada.
4. Log de rádio
- Usado para informações relacionadas a rádio e telefone(modem)
- Entradas de log consistem em código de tags binárias e mensagem para informações de rede
- Sistema de log log encaminha automaticamente mensagens com tags específicas para o buffer de rádio
Formato de log no Android
Baixo é o formato de log comum no android
tv_sec tv_nsec priority pid tid tag messageLen Message
tag: log tag
tv_sec & tv_nsec: o timestamp das mensagens de log
pid: o id do processo de onde vêm as mensagens de log
tid: o id da thread
valor da prioridade é um dos seguintes valores de caracteres, ordenados da menor para a maior prioridade:
V – Verbose (menor prioridade)*
D – Debug*
I – Info*
W – Warning*
E – Error*
F – Fatal*
S – Silent (maior prioridade, na qual nada é impresso)
Log-File locations
Existem vários diretórios onde os logs (incluindo os de crashes) são armazenados e não são padronizados(i.e. alguns podem ser específicos da ROM). Eu estou colocando alguns comuns aqui.
- /data/anr : Dalvik escreve aqui em ANR traços de pilha, i.e. “Application Not Responding” aka “Force-Close”
- /data/dontpanic : contém alguns logs de crash incluindo traces
- /data/kernelpanics :- Armazena logs relacionados ao “kernel panic”
- /data/tombstones :- pode conter vários arquivos tombstone_nn (nn é um número de 0 a 10 e depois de 10 novamente repeti-lo)
‘Log’ ferramenta de linha de comando
Para capturar Logs dos dispositivos/emulador androide Abaixo está alguma ferramenta de linha de comando. Em projetos da vida real, existem aplicativos/ferramentas de captura de logs usados para capturar os logs no dispositivo do usuário e compartilhados de volta para o Desenvolvedor/Mantenedor para análise.
- adb logcat (mostra todos os logs do tipo para o sistema android atual
- adb logcat -v threadtime (incluirá data e hora)
- adb logcat -v threadtime > logfile.txt (Armazena logs em logfile.txt)
Padrão de filtragem útil
Você pode usar o filtro abaixo no seu comando adb para filtrar logs. Você também pode usar este filtro para procurar no seu ficheiro de logs(logs fornecidos pelo dispositivo do utilizador).
- adb logcat -f <output_file> Save all logs into a file
- adb logcat “*:E” Get all errors and fatals
- adb logcat | grep -i “foo.example”. #get all logs related to “foo.example.*” tagname
- adb logcat “application_or_tag_name:*” “*:S” Obter todos os logs por nome de aplicação
- adb logcat -b eventos “gsm_service_state_change” “*:S” Obter todas as alterações de estado GSM
- adb logcat -b radio Obter todos os eventos de rádio
Análise de log
Até agora obtemos toda a exposição fundamental do Sistema de Registo do Android. Agora o tempo para analisar os logs que vêm do seu aplicativo ou usuário final. Aqui podemos dividir a análise dos logs em duas partes
- Debug Log:- arquivo de logs vindo durante a fase de desenvolvimento e teste
- Log de produção:- arquivo de logs vindo diretamente do usuário final.
Então adivinhe qual é difícil Log de produção, certo? Então qual é a melhor abordagem para depurar e obter a informação desejada a partir dos logs capturados? Como discuti acima, podemos fazê-lo usando
- “Padrões de Filtros Úteis” e
- Usando Algumas Ferramentas (exemplo LogRabit, GoogleLogTool e SonyLogTool)
Então na última análise de logs do Android é a aprendizagem contínua e utilizando o seu processo de experiência. Pessoalmente eu analisei logs via filtro e ferramenta relevante com minha experiência passada.
Mas uma coisa é boa Toda análise de andróide (problema de usuário final/log de bugs) dá a você uma nova aprendizagem e experiência. Então continue fazendo e aproveite sua vida como codificador e mantenedor do andróide system😎😎😎