Melhores bibliotecas de logging para Go (Golang): visão geral e comparação

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Logging para Go (Golang): melhores soluções e ferramentas

Logging é um dos componentes-chave de qualquer aplicação de produção em Go. Ajuda a rastrear erros, analisar o comportamento do sistema e realizar auditorias. Existem muitas bibliotecas de logging em Go, cada uma com suas características, desempenho e conveniência. Neste artigo, veremos as melhores soluções: desde o pacote padrão log até os de alto desempenho zap e zerolog, além do novo padrão slog.



1. Pacote padrão log

O pacote embutido log é a maneira mais simples de começar a fazer logging em Go. Não requer instalação de dependências de terceiros e é adequado para projetos pequenos ou prototipagem rápida.

Características:

  • API minimalista: Print, Printf, Println, Fatal, Panic.
  • Suporte a prefixos e flags (data, hora, arquivo).
  • Por padrão, exibe em os.Stderr.
  • Não suporta logging estruturado "pronto para uso".
package main

import "log"

func main() { log.Println("Esta é uma mensagem simples") log.Printf("Usuário %s fez login", "admin") log.Fatal("Erro crítico — a aplicação será encerrada")}

Quando usar: para scripts, utilitários, testes ou quando não são necessários formatos complexos.



2. logrus — logging estruturado

Logrus é uma das bibliotecas mais populares para Go. Ela fornece logging estruturado com suporte a níveis, campos e formatação (JSON, texto).

Características:

  • Níveis: Trace, Debug, Info, Warn, Error, Fatal, Panic.
  • Suporte a hooks para enviar logs para serviços de terceiros.
  • Formatação flexível: TextFormatter, JSONFormatter.
  • Possibilidade de adicionar campos de contexto.
package main

import ( "github.com/sirupsen/logrus")

func main() { log := logrus.New() log.SetFormatter(&logrus.JSONFormatter{}) log.WithFields(logrus.Fields{ "user": "admin", "ip": "192.168.1.1", }).Info("Usuário autenticado")}

Desvantagem: desempenho inferior em comparação com bibliotecas mais novas (zap, zerolog).



3. zap — logging ultrarrápido da Uber

Zap da Uber é uma biblioteca focada em desempenho máximo. Ela usa reflexão (reflection) apenas quando necessário e oferece dois modos: SugaredLogger (conveniente, mais lento) e Logger (rápido, requer tipagem estrita).

Características:

  • Velocidade muito alta: até 10 vezes mais rápido que logrus.
  • Suporte a logging estruturado com campos.
  • Configuração flexível: níveis, saída para arquivo/console, rotação.
  • Segurança: não aloca memória no caminho crítico.
package main

import ( "go.uber.org/zap")

func main() { logger, _ := zap.NewProduction() defer logger.Sync()

logger.Info("Servidor iniciado", zap.String("port", "8080"), zap.Int("workers", 10), )}

Quando usar: microsserviços de alta carga, sistemas em tempo real.



4. zerolog — minimalismo e desempenho

Zerolog é outra biblioteca de alto desempenho que enfatiza zero alocações e simplicidade. Ela vem com excelente documentação e suporte embutido para JSON por padrão.

Características:

  • Alocações mínimas de memória.
  • Suporte a níveis, campos, sub-loggers.
  • Pretty-printing embutido para desenvolvimento.
  • Por

Recommendations