Boas práticas para escrita de Logs (Parte 1)
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:
- 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.
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:
É 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á!