DEV Community

Alberto Luiz Souza
Alberto Luiz Souza

Posted on

A Importância de Sistematizar a geração de Log nas Aplicações

Disclaimer

Este texto foi inicialmente concebido pela IA Generativa em função da transcrição do episódio do nosso canal, Dev Eficiente. O episódio completo pode ser visto no canal.

Referências para a construção do conteúdo

Introdução

Hoje vamos falar sobre logs, mas de um jeito bem mais profundo do que você está acostumado(a). E por que log, já que é um tema tão comum no nosso dia a dia? Porque log me lembra um pouco o que eu sentia quando via testes automatizados sendo escritos um tempo atrás.

Você juntava 10 pessoas para escrever testes automatizados em cima de um mesmo conjunto de classes, funções, ou algo do gênero, e milagrosamente, você tinha baterias de testes completamente diferentes.

Approaches para fazer os testes completamente diferentes, muitas vezes deixando de fora condicionais das suas branches de código, ou não cobrindo todas as branches. Faltava sistematização, algo meio artesanal.

Quando olho para log, sinto que temos o mesmo problema. Qual linha eu vou logar? Eu logo essa linha ou não? Eu logo em nível de Info ou Debug? Qual a diferença entre Info e Debug? Erro é mais padrão, deu erro, você loga com o erro e pronto.

O que logar e quais informações logar? Para mim, não era tão certeiro assim. Por mais que muitos sistemas utilizem boas práticas de log, centralizando o log e conseguindo tirar insights, não era totalmente claro para mim. Então, peguei uns dois dias para investigar um pouco mais sobre o que a galera do mercado fala e o que os artigos acadêmicos investigaram sobre práticas de log.

Os 5Ws do Log

A primeira pessoa que me deu um feedback sobre log foi meu colega de trabalho, Rafael Ponte. Ele falou sobre os 5Ws de Application Logging: quem, o que, quando, onde, porquê e como. Essas são informações importantes quando você vai fazer log, pensando que aquilo vai ser útil em algum processo investigativo no futuro.

Categorias de Log

Um artigo interessante da Microsoft classificou logs em cinco grandes categorias dentro da base de código deles:

Asserções: Verificações de pré-condições, pós-condições e invariantes.
Checagem de Retorno: Verificação se o retorno de uma função é condizente com o esperado.
Exceções: Log de problemas que ocorrem durante a execução.
Branching: Logs em pontos de decisão do código.
Observacionais: Logs que registram o fluxo de execução.

Práticas de Log

Além disso, dois papos que considerei interessantes foram:

Um canal chamado The X Lab, onde João Ronaldo e Marcelo Costa discutem 10 dicas sobre log bem feito.

O podcast Software Engineering Radio, episódio 220 de 2015, onde um C-Level de uma empresa de log discute a importância de logar sempre que houver dúvida.

Conclusão

Para mim, sistematizar o log é muito importante. Saber o que colocar para responder as perguntas dos 5Ws te faz ser mais crítico em relação à biblioteca de log que você está utilizando e ao log que você está escrevendo.

Espero que essas referências e insights ajudem você a melhorar suas práticas de log e a sistematizar o processo dentro do seu produto.

Se você gostou, deixe um comentário. Se não gostou ou tem um comentário construtivo, deixe aqui também. Vou ter o maior prazer em responder. Até a próxima!

Este post foi baseado na transcrição de um vídeo do canal Dev Eficiente, onde discutimos a importância de sistematizar o log em aplicações.

Vamos falar mais ?

Se você gostou, deixa um comentário aqui. Tem um comentário construtivo? Deixa aqui também, com educação. Vamos trocar mais ideias :).

Conheça mais sobre a Jornada Dev + Eficiente

A Jornada Dev + Eficiente é um treinamento cujo objetivo é fazer com que você cresça na carreira como uma pessoa especialista em Design e Arquitetura de Software.

Para saber mais, acesse em https://deveficiente.com

Top comments (0)