Towards a Taxonomy of Software Log Smells

Este estudo propõe uma taxonomia de nove "maus odores" (smells) de logs, derivada de uma revisão sistemática da literatura e mapeada para ferramentas existentes, com o objetivo de auxiliar desenvolvedores a escreverem código de log de maior qualidade e identificar lacunas na pesquisa atual.

Nyyti Saarimäki, Donghwan Shin, Domenico Bianculli

Publicado Wed, 11 Ma
📖 6 min de leitura🧠 Leitura aprofundada

Each language version is independently generated for its own context, not a direct translation.

Imagine que o software é como uma casa em constante construção. Os desenvolvedores são os pedreiros e engenheiros que constroem os cômodos, instalam a eletricidade e pintam as paredes.

Agora, imagine que, enquanto trabalham, eles deixam um diário de obra (os logs). Esse diário é crucial. Se a casa pegar fogo ou uma torneira começar a vazar, os bombeiros e encanadores olham esse diário para entender o que aconteceu, quando e por quê.

O problema é que, muitas vezes, esse diário é escrito de forma bagunçada, confusa ou até mentirosa. É aí que entra o conceito de "Cheiro de Log" (Log Smells).

O que é um "Cheiro de Log"?

Pense em um "cheiro" não como algo que você sente com o nariz, mas como um sinal de alerta. Assim como um cheiro de queimado na cozinha pode indicar um incêndio que ainda não se espalhou, um "Cheiro de Log" é um sinal de que algo está errado na forma como o software está sendo registrado, mesmo que o programa ainda esteja funcionando.

Se você ignorar esses cheiros, eles podem virar problemas graves: o sistema pode ficar lento, dados sensíveis podem vazar ou, quando algo quebrar, ninguém conseguirá consertar porque o diário de obra não faz sentido.

A "Caixa de Ferramentas" dos Problemas (A Taxonomia)

Os autores deste estudo foram como detetives que vasculharam a literatura científica para criar um catálogo de 9 tipos de "mau cheiro" que os desenvolvedores podem encontrar. Eles dividiram esses problemas em duas categorias principais:

  1. O Problema está no Código (O Pedreiro): O erro está na forma como o diário foi escrito.
  2. O Problema está no Diário (O Papel): O erro está no que foi realmente registrado.

Aqui estão os 9 "maus cheiros" explicados de forma simples:

1. Tempestade de Formatos (Format Turmoil)

  • A Analogia: Imagine que um pedreiro escreve a data como "05/08", outro como "Agosto 5", e um terceiro apenas "5".
  • O Problema: Os registros não seguem um padrão. É impossível usar um computador para ler tudo rapidamente porque cada um fala uma língua diferente.

2. Identidade Escondida (Undercover Identifier)

  • A Analogia: O diário diz "Alguém quebrou a janela", mas não diz quem foi. Foi o João? A Maria? O gato?
  • O Problema: Falta saber qual parte do sistema (ou qual "pedreiro") gerou o registro. Sem isso, você não sabe onde procurar o erro.

3. O Nível de Alerta Confuso (Mercurial Logging Level)

  • A Analogia: Você usa um grito de "INCÊNDIO!" para avisar que o café acabou, e um sussurro para avisar que o prédio está desabando.
  • O Problema: Os avisos de gravidade estão errados. Um erro pequeno é marcado como crítico, ou um desastre é tratado como algo trivial. Isso confunde quem tenta priorizar o que consertar.

4. A Variável Enganosa (Deceptive Variable)

  • A Analogia: O diário diz "O valor é X", mas esquece de dizer que X é o preço do pão ou a temperatura do forno. Ou pior, escreve "Erro: [Objeto]" em vez de "Erro: Falha na conexão".
  • O Problema: As informações registradas são vagas, erradas ou ilegíveis para humanos.

5. Loucura nas Mensagens (Message Madness)

  • A Analogia: Um dia você escreve "Conexão estabelecida", no outro "Conectando..." e no outro "Falha ao conectar", tudo com gramática ruim e sem sentido.
  • O Problema: As mensagens são inconsistentes, cheias de erros de português ou repetitivas, tornando a leitura um pesadelo.

6. O Log Perdido no Vento (Logging Lost in the Wind)

  • A Analogia: O pedreiro esqueceu de anotar que a parede caiu. O diário simplesmente pula de "Construindo parede" para "Parede caída", sem registrar o momento da queda.
  • O Problema: Informações cruciais não foram gravadas. Quando o problema acontece, o diário está em branco.

7. O Lixo no Log (Landfill Logs)

  • A Analogia: O pedreiro anota tudo: "Respirei", "Pisquei", "O sol estava brilhando". O diário tem 1 milhão de páginas, mas a informação importante está escondida no meio de tanto lixo.
  • O Problema: Excesso de dados inúteis. Isso deixa o sistema lento e torna impossível encontrar o que realmente importa.

8. Os Guardas Dormindo (Sleeping Guards)

  • A Analogia: O pedreiro gasta energia escrevendo um relatório detalhado, mesmo que ninguém precise ler aquele relatório naquele momento.
  • O Problema: O código gasta recursos (memória, bateria, tempo) para gerar logs que nem serão usados, ou gasta recursos para gerar logs que deveriam ser bloqueados.

9. O Esqueleto no Armário (Skeleton in the Closet)

  • A Analogia: O próprio diário está escrito de forma tão confusa, com frases longas e repetidas, que é difícil para qualquer um entender como ele foi feito.
  • O Problema: O código que gera o log é sujo, difícil de manter e cheio de erros de programação.

As Consequências: O Que Acontece se Ignorarmos?

Se você deixar esses cheiros ficarem, a casa pode:

  • Vazar Segredos: O diário pode conter senhas ou dados de clientes expostos.
  • Confundir o Tempo: O diário pode dizer que o evento A aconteceu antes do B, quando na verdade foi o contrário.
  • Deixar a Casa Lenta: O excesso de anotações consome a energia da bateria do celular ou o processador do servidor.
  • Causar Acidentes: O código de anotação pode interferir no funcionamento do software, causando travamentos.

Ferramentas para Limpar o Cheiro

Os autores também procuraram por "aspiradores de pó" (ferramentas automáticas) que consertam esses problemas.

  • O que acharam: Existem 16 ferramentas que ajudam a corrigir alguns desses cheiros, especialmente os relacionados a níveis de alerta e mensagens.
  • O que falta: Ainda não há ferramentas automáticas boas para consertar a "Tempestade de Formatos", os "Guardas Dormindo" ou o "Esqueleto no Armário". Isso significa que os desenvolvedores ainda precisam fazer muito trabalho manual nessas áreas.

Conclusão

O estudo nos ensina que escrever bons logs não é apenas "anotar coisas". É uma habilidade que requer cuidado. Se os desenvolvedores aprenderem a identificar esses "cheiros" cedo, eles podem evitar grandes desastres no futuro. É como checar a fumaça antes que a casa pegue fogo: um pequeno esforço agora evita um grande problema depois.