DEV Community

Alberto Luiz Souza
Alberto Luiz Souza

Posted on

Como Logar de Maneira Sistemática

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);
Enter fullscreen mode Exit fullscreen mode

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)