Golang: Importância de planejar como exibir logs em aplicações de uso intenso

Matheus - Oct 10 - - Dev Community

Na maioria das vezes não gastamos o tempo necessário para planejar corretamente os logs das nossas aplicações, que posteriormente nos causa um retrabalho, muitas vezes desnecessário.

O uso bem planejado e aplicado de logs pode, além de melhorar uma análise futura sobre algum problema, impactar de forma significativa o desempenho da aplicação, principalmente para processos intensos.

Pensando em exemplificar e demonstrar um pouco desse impacto, seguem dois exemplos com seu benchmark, respectivamente.

O primeiro de uma forma comum de "loggar" informações no código, mas pouco valor de informação, se torna apenas um dado:

benchmark_logs_test.go
benchmark_logs_test

Benchmark:
Benchmark_log

E o segundo com o log estruturado, apresentando somente no final os tempos de inicio, finalização e a mensagem.

benchmark_logs_enhancement_test.go
benchmark_logs_enhancement_test

Benchmark:
Benchmark_logs_enhancement

Ambos exemplos, possuem um loop de cem mil de índices, que usando goroutines, incrementa uma variável.
Ao iniciar é capturado a hora atual, e ao finalizar, é impresso o tempo que levou.
Estou usando a biblioteca logrus de logs, pois tem inúmeras propriedade e funcionalidade interessantes, como o log estruturado.

Nitidamente pode ser perceber, a diferença que pode causar no desempenho das aplicações, um log não pensado corretamente.

. . .
Terabox Video Player