Desenvolvimento

29 jun, 2015

Você já fez a anamnese de um software?

Publicidade

Anamnese (do grego ana, trazer de novo, e mnesis, memória) é uma entrevista realizada pelo profissional de saúde ao seu paciente, que tem a intenção de ser um ponto inicial no diagnóstico de uma doença ou patologia.

Há muito reflito o quanto o comportamento de um software assemelha-se com o de um organismo. Uma vida artificial com várias reações ocorrendo a todo tempo — crescendo e desenvolvendo-se a cada dia e susceptível de contrair patógenos.

Para o diagnóstico de uma doença, o médico aplica ao seu paciente a anamnese para diagnosticar e prevenir uma doença, e com o software não é diferente.

O arquivo de log foi criado com o objetivo de descrever processos, eventos ou comportamentos em um ambiente virtual, um ponto de partida para o diagnóstico de anomalias comportamentais. Com ele, você pode acessar processamento de dados em tempo real ou analisar o comportamento do seu aplicativo, preventivamente.

A questão é: como criar uma boa camada de log? O que eu acabo vendo, e muito, são registros de falhas de lógica ou de programação na aplicação. É bem comum você achar uma linha de log com este tipo de registro, log do Laravel:

1#production.ERROR: exception 'Symfony\Component\HttpKernel\Exception\NotFoundHttpException' 
in C:\wamp\www\champions\vendor\laravel\framework\src\Illuminate\Routing\RouteCollection.php:148

O problema de gerar um log desse tipo é justamente a falta de informação. Não tem como saber o que causou o erro e muito menos qual foi o comportamento da aplicação nesse caso.

Abaixo, segue o log do Apache:

[Wed Oct 11 14:32:52 2000] [error] [client 127.0.0.1] client denied by server configuration: /export/home/live/ap/htdocs/test

Apesar de o Apache não dar todas as informações sobre o erro, é de fácil interpretar que há algum erro na configuração do servidor. Além disso, o que foi registrado é justamente o comportamento, e não um erro de implementação.

É perceptível a negligência. O registro de dados comportamentais é um assunto completamente abandonado e muitas vezes usado com a finalidade de depuração de código e só lembrado quando o sistema entra em óbito, tentando encontrar uma solução para todos os males, como uma cura mediúnica.

Nesse caso, como criar um bom sistema de log? Bom, para isso, crie um bom questionário de anamnese. Crie um questionário com tudo aquilo que você quer que o seu software responda. Para criar um bom questionário, tenha conhecimento completo do domínio que a sua aplicação se propõe a resolver.

Exemplo de um questionário de um software que tem como domínio distribuir mensagens de uma aplicação para outras:

  • Qual são as data e os horário do processo?
  • Quais mensagens entraram?
  • Quais foram as mensagens enviadas e para quais softwares?
  • Quais arquivos não foram enviados e quais são motivos?
  • Qual foi o processamento usado e quais eram as quantidades de mensagens nesse processamento?

Não necessariamente uma linha de log deve ter todas essas informações, mas o seu sistema de log sim. Você pode separar em arquivos como: mensagens.2015-06-20.log, enviadas.2015-06-20.log, não_enviadas.2015-06-20.log etc.

Eu gosto de usar o formato CSV para os logs da minha aplicação. Quando preciso realizar uma busca ou fazer uma filtragem é mais fácil, pois posso usar o Excel, mas existem vários formatos, como o Microsoft IIS, o NCSA e o Apache .

Sempre tenha como hábito de planejar bem o que você deseja registrar, o tamanho limite do seu log, e o seu tempo de vida. O ideal é que um log tenha no máximo três dias de vida – mais do que isso ele se torna história, e não uma ferramenta de analisa comportamental.

E o mais importante: sempre consulte os registros de log. Diariamente, entenda como a sua aplicação se comporta. Afinal, é muito mais caro remediar do que prevenir.