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.
Introdução
Hoje vamos continuar falando sobre logs, dando sequência ao post anterior onde investigamos como fazer logs de maneira sistemática. Se você não leu o post anterior, não se preocupe, ele está aqui.
Situações Inesperadas e Fluxos de Execução
Vamos discutir em cima de dois fluxos: situações inesperadas e fluxos de execução que carecem de acompanhamento mais fino.
As situações inesperadas incluem falhas de checagem de pré-condição, pós-condição ou exceções não tratadas.
Já os fluxos de execução são aqueles sugeridos que você logue obrigatoriamente, como autenticação, acesso a sistemas externos, alteração do estado da aplicação, erros de disponibilidade e acessos indevidos.
Níveis de Log
Para facilitar a monitoração, é importante definir quando usar cada nível de log:
Error: Deve ser usado para exceções e erros críticos.
Info: Para tudo que é obrigatório logar, como fluxos de execução importantes.
Debug: Para fluxos de execução que não são obrigatórios, mas que podem ser úteis para apoiar na análise de um problema eventual, como entradas e saídas de métodos.
Configuração do Logback
Para configurar a biblioteca de log sugerida pelo Spring Boot, o Logback, você precisa adicionar algumas dependências e configurar os appenders para que o output do log seja feito em JSON. Isso facilita a busca e a análise dos logs.
Uso de Aspectos para Adicionar Contexto
Utilizamos a orientação a aspectos (AOP) para adicionar informações contextuais aos logs, como o usuário autenticado. Isso é feito através da classe ThreadLocal, que associa variáveis à thread corrente, permitindo que informações específicas sejam logadas de maneira estruturada.
Exemplo Prático
Vamos a um exemplo prático. Imagine que você está cadastrando uma nova categoria em um sistema. Esse é um fluxo de execução que altera o estado do sistema e, portanto, deve ser logado. Utilizamos uma API que criamos para logar informações como o método que está sendo executado, o que está acontecendo, onde está acontecendo, e informações adicionais que ajudam a entender o contexto da operação.
Log5WBuilder
.method(metodoParaLog)
.whatIsHappening("Vai cadastrar uma nova categoria")
.addInfo("nome",categoria.getNome())
.info(log);
Conclusão
Logar de maneira sistemática é crucial para a monitoração e troubleshooting de aplicações. Utilizando as práticas e configurações discutidas, você pode garantir que seus logs sejam úteis e estruturados, facilitando a identificação e resolução de problemas.
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)