Boas práticas para escrita de Logs (Parte 1)

Vanessa Gomes
3 min readSep 2, 2016

--

Então, antes de começar a dar essas dicas que compilei sobre logs eu gosto de pensar: por que alguém precisaria de logs? A resposta que gosto de dar é que logs são necessários para monitoramento e solução de problemas.

E o que são logs? Curto muito a definição de que logs não necessariamente tem um começo ou um fim e sim são uma representação de um fluxo contínuo de eventos que duram enquanto durar a sua aplicação. Uso como uma das minhas referências um texto de Martin Fowler que fala muito bem sobre Event Sourcing. Então, vamos às dicas:

  1. Use as ferramentas apropriadas.

Existem diversos plugins e frameworks nas linguagens mais populares (Java, Python, Ruby, JavaScript, Swift, etc…) que conseguem te proporcionar benefícios apropriados de logging. Não vale a pena continuar naquele System.out.println().

2. Use níveis de log (não esqueça deles)

Quando começamos a usar ferramentas apropriadas conseguimos utilizar as vantagens dos níveis de log. Por que alguém iria se preocupar com esses níveis? Porque com isso é possível filtrar as mensagens e ver somente o que faz sentido quando se está monitorando uma aplicação. Esses níveis também representam prioridade e os níveis mais comuns são:

  • ERROR: alguma coisa muito ruim aconteceu e precisa de atenção imediatamente. Sistemas em geral não toleram (e falham) quando situações nesse nível acontecem.
  • WARN: aqui você informa que ocorreram falhas mas mesmo assim os processos e fluxos podem continuar.
  • INFO: logs com informações de negócio e de fluxo interessantes ao monitoramento.
  • DEBUG: coisas de quem desenvolve. São usados em situações que você quer informações muito detalhadas de um processo ou fluxo. Devem ser controlados pois logs de DEBUG são muito verbosos e podem atrapalhar o monitoramento.

3. Evite efeitos colaterais

Logs não devem lançar exceções nem devem deixar sua aplicação mais lenta. Quando estiver montando seu log não faça consulta em databases e/ou chamadas a APIs ou sistemas externos. Isso acarreta em poder de processamento desperdiçado na sua aplicação e pode tornar sua aplicação mais lenta.

Neste caso, todas as vezes que esse log é executado, uma consulta é feita a um banco externo. A depender da quantidade de vezes que esse fluxo é executado além de sobrecarregar seu banco, você pode sobrecarregar a Rede e consequentemente a performance da aplicação.

Já imaginou sua aplicação no ar e quebrando ou com problemas de performance por causa dos seus logs? Assim não dá ;)

4. Mantenha suas mensagens de logs concisas e descritivas

Mensagens devem agregar valor. Elas devem permitir a quem está debugando conseguir detectar o que gerou determinado erro, em que momento e com quais entradas/saídas. Exemplo:

Exemplos de logs não descritivos
Exemplo de um log descritivo.

É isso! Em breve posto a segunda parte com mais 5 dicas. O que você achou? Qual linguagem você programa e qual framework você usa para gerenciar seus logs? Você já segue alguma dessas práticas? Hoje num projeto em Java eu uso o Log4j2.

Conto com sua opinião e feedback. Até a próxima!
Esse papo de Logs continua na Parte 2. Corre lá!

--

--

Vanessa Gomes

Entusiasta de percussões e desenvolvedora de software nas horas pagas.