No Log4J, Slf4J e algumas outras estruturas de log em Java, você tem dois níveis de "desenvolvedor" para o log:
- DEPURAR
- VESTÍGIO
Eu entendo o que DEBUG faz, porque a explicação é clara:
O nível DEBUG designa eventos informativos refinados que são mais úteis para depurar um aplicativo.
Mas o nível TRACE não é muito específico sobre seu caso de uso:
O nível TRACE designa eventos informativos mais refinados que o DEBUG
(Fonte: o log4J JavaDoc )
Isso não me diz como ou quando usar o TRACE. Curiosamente, este não é um nível de gravidade definido no padrão syslog . Pesquisando a diferença entre TRACE e DEBUG apenas parece retornar "use DEBUG, oh, e existe TRACE também". Não foi possível encontrar um caso de uso específico para o nível TRACE. O melhor que pude encontrar foi esta antiga página wiki debatendo o mérito da existência do nível.
Isso, como arquiteto, gera muitas bandeiras e perguntas na minha cabeça. Se um jovem desenvolvedor me pedisse para adicionar o TRACE à minha arquitetura, eu o bombardearia com perguntas:
- Quais são alguns exemplos de informações que devem ser registradas no TRACE e não no DEBUG?
- Que problema específico eu resolvo registrando essas informações?
- Nesses exemplos, quais são as propriedades das informações registradas que discriminam claramente entre o registro no nível TRACE e não no nível DEBUG?
- Por que essas informações devem passar pela infraestrutura de log?
- Quais são os benefícios de manter essas informações em um diário de logs em vez de apenas usá-las
System.out.println
? - Por que é melhor usar o log para isso do que um depurador?
- Quais são os benefícios de manter essas informações em um diário de logs em vez de apenas usá-las
- O que seria um exemplo canônico de registro no nível TRACE?
- Quais são os ganhos específicos que foram obtidos registrando-se no nível TRACE em vez de DEBUG no exemplo?
- Por que esses ganhos são importantes?
- Por outro lado: que problemas eu evitei registrando-o no TRACE em vez de DEBUG?
- De que outra forma eu poderia resolver esses problemas? Por que o log no nível TRACE é melhor do que as outras soluções?
- A instrução de log no nível TRACE deve ser deixada no código de produção? Por quê?
Mas, como está presente na maioria dos quadros principais, acho que é útil para alguma coisa? Então ... para que serve o TRACE e o que o distingue do DEBUG?