A importância dos logs na sua aplicação

cassunde

Mattheus Cassundé

Posted on October 1, 2022

A importância dos logs na sua aplicação

Introdução

As vezes não damos aos logs a importância que eles tem e com isso não conseguimos usar a capacidade que eles tem em ajudar no dia a dia de uma aplicação em produção.

Nada sabe mais sobre a falha do que a própria aplicação que falhou, por tanto podemos usar os logs para saber o que estava se passando na aplicação quando ela falhou.

Quando podemos usar os logs?

Podemos usar o poder dos logs em diversos aspectos vou listar alguns como:

  • Validação de novas funcionalidades
  • Análise de erros
  • Criação de alarmes e visualizações

Validação de novas funcionalidades

É legal sempre que lançarmos alguma funcionalidade nova, sabermos se ela está sendo usada ou se está atendendo o objetivo para qual ela foi implementada, com base nisso podemos lançar os logs sempre que uma rotina for finalizada com sucesso.

Um exemplo, foi lançada uma funcionalidade que cria prontuário de paciente sempre que ele faz seu primeiro atendimento no hospital, até pouco tempo na aplicação não era possível fazer isso de formal automática, que tal lançar um log sempre que essa funcionalidade rodar com sucesso? dessa forma saberemos que funcionalidade entregue em produção funcionou com sucesso.

Análise de erros

Tão importante quanto sabermos quando uma funcionalidade nova roda com sucesso é saber quando essa mesma falha, sempre vai existir a possibilidade de algum cenário não mapeado acontecer e literalmente quebrar sua funcionalidade, é importante que saibamos o mais rápido possível para entender e corrigir esse cenário não mapeado.

O log poderá nos ajudar exibindo o máximo possível de informações sobre o cenário que ocorreu, informações como:

  • Classe
  • Método
  • Variáveis

pois essas informações certamente ajudarão a entender o cenário e agilizar a definição da solução.

Criação de alarmes e visualizações

Existe no mercado diversos centralizadores de logs onde um dos principais objetivos é facilitar a visualização dos mesmos.

Image description

Ferramentas como Splunk e Kibana permitem criar alarmes a partir de consultas em logs, por exemplo, sempre que chegar um log de "erro ao salvar paciente" deve ser disparado um alarme para que time de desenvolvimento/sustentação possam agir para corrigir o mais rápido possível o problema em produção.

Existe algum framework para logs?

No mundo java um dos Frameworks mais populares é o Log4J, com ele podemos deixar nossos logs mais eficientes e programáveis, podemos definir também um padrão de log como por exemplo:

"%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n";
Enter fullscreen mode Exit fullscreen mode

com essa configuração nosso log será mais ou menos assim:

17:13:01.540 [main] ERROR com.foo.Bar - Did it again!
Enter fullscreen mode Exit fullscreen mode

Observa que temos a palavra ERROR, com o log4j temos níveis de log que poderemos relacionar com a gravidade do que aconteceu.

Vamos fazer um exemplo, imagine que temos o método abaixo

public void salvar(Paciente paciente {
  paciente.repository(paciente);
}
Enter fullscreen mode Exit fullscreen mode

Para deixar claro que esse método foi executado com sucesso, ele ficaria mais ou menos assim:

Logger logger = Logger.getLogger("br.com.MinhaClasse");
public void salvar(Paciente paciente){
  paciente.repository(paciente);
  logger.INFO("paciente salvo com sucesso");
}
Enter fullscreen mode Exit fullscreen mode

Observe que agora temos uma linha de logger do tipo INFO logo após o passo que salva o paciente, seu log ficaria mais ou menos assim:

17:13:01.540 [main] INFO com.foo.Bar - Paciente salvo com sucesso
Enter fullscreen mode Exit fullscreen mode

Agora que entendemos um pouco de como podemos usar o Log4j vamos ver como podemos lidar com erros:

public void salvar(Paciente paciente){
   try{
     paciente.repository(paciente);    
   }catch(Exception e){
       e.printStackTrace();
   }
}
Enter fullscreen mode Exit fullscreen mode

Nessa classe acima podemos melhora-la deixando-a com logs para ajudar a entender o que aconteceu quando esse método executou.

public void salvar(Paciente paciente){
   try{
     paciente.repository(paciente);
     logger.INFO("paciente salvo com sucesso, paciente={}",paciente.getCodigo())
    }catch(Exception e){
       logger.ERROR("problema para salvar paciente, paciente={}",paciente.getCodigo());
    }
}
Enter fullscreen mode Exit fullscreen mode

Observando o método a cima, agora é possível saber quando um paciente foi salvo com sucesso e quando um paciente teve problema. Para facilitar mais ainda o entendimento quando analisarmos os logs é a possibilidade de saber qual paciente deu erro.

Dados sensíveis

Hoje em nosso país temos a lei LGPD que visa melhorar a segurança dos nossos dados na Internet. primordialmente não devemos logar nenhum dado que possa identificar unicamente uma pessoa como:

  • CPF
  • Data de Nascimento
  • e-mail
  • Nome completo
  • etc

Então observe sempre o que estamos logando para não expor dados pessoais.

Conclusão

É fácil começar a usar os logs para ajudar no entendimento do que acontece dentro da sua aplicação, então use e faça proveito dessa vantagens.

💖 💪 🙅 🚩
cassunde
Mattheus Cassundé

Posted on October 1, 2022

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related