Níveis e atributos de registros
Adicione contexto aos registros
Níveis e atributos de registros é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.
Adicionando contexto aos registros
Uma mensagem simples informa o que aconteceu; atributos informam os detalhes que tornam os registros acionáveis: qual usuário, qual requisição e quanto tempo levou.
Os quatro níveis
Níveis do slog, da menor para a maior gravidade:
Debug(-4)Info(0)Warn(4)Error(8)
Os níveis são inteiros, portanto você pode definir níveis personalizados entre eles.
Filtrando por nível
Defina um nível mínimo em HandlerOptions. Os registros abaixo dele são descartados com baixo custo.
package main
import (
"log/slog"
"os"
)
func main() {
opts := &slog.HandlerOptions{Level: slog.LevelWarn}
logger := slog.New(slog.NewTextHandler(os.Stdout, opts))
logger.Info("ignored")
logger.Warn("shown")
}Atributos tipados
Além dos argumentos livres de chave e valor, o slog oferece construtores tipados que evitam erros e são mais rápidos:
slog.String("k", v)slog.Int("k", v)slog.Bool("k", v)slog.Duration("k", d)
slog.Info("done", slog.String("phase", "build"), slog.Int("files", 12))Por que usar Attrs tipados
Attrs tipados detectam o erro de "número ímpar de argumentos" em tempo de compilação e permitem que o manipulador ignore a reflexão. Prefira-os em caminhos críticos de desempenho.
Agrupando atributos
slog.Group aninha campos relacionados sob uma única chave.
slog.Info("req",
slog.Group("http",
slog.String("method", "GET"),
slog.Int("status", 200),
),
)Logger.With para contexto compartilhado
logger.With(...) retorna um registrador filho que anexa os mesmos atributos a todas as mensagens. É perfeito para um ID de requisição.
reqLog := logger.With("requestID", "abc-123")
reqLog.Info("started")
reqLog.Info("finished")Registro sensível ao contexto
As variantes *Context (por exemplo, InfoContext) transportam um context.Context, permitindo que os manipuladores extraiam IDs de rastreamento.
slog.InfoContext(ctx, "handling", "path", "/api")Níveis dinâmicos
Use um slog.LevelVar para alterar o nível durante a execução (por exemplo, aumentá-lo para Debug ao investigar um incidente) sem reiniciar.
var lvl slog.LevelVar
lvl.Set(slog.LevelInfo)
h := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: &lvl})
// later: lvl.Set(slog.LevelDebug)Erros como atributos
Anexe erros como atributos para que possam ser consultados, em vez de concatená-los à mensagem.
slog.Error("save failed", slog.String("err", err.Error()), slog.Int("retry", 2))Executável: níveis e With
Este programa filtra por nível e usa um registrador filho com contexto compartilhado.
package main
import (
"log/slog"
"os"
)
func main() {
opts := &slog.HandlerOptions{Level: slog.LevelInfo}
base := slog.New(slog.NewTextHandler(os.Stdout, opts))
req := base.With("requestID", "r-7")
req.Debug("hidden")
req.Info("processing", slog.Int("items", 3))
}Verificação rápida
Teste sua compreensão sobre níveis e atributos.
Recapitulação
Você aprendeu sobre níveis e atributos:
- Quatro níveis integrados; filtre com
HandlerOptions.Level - Attrs tipados (
slog.String,slog.Int) são mais seguros e rápidos slog.Groupaninha campos;logger.Withcompartilha o contextoLevelVarpermite alterações de nível durante a execução
Perguntas Frequentes
A aula “Níveis e atributos de registros” é grátis?
Sim — o texto completo de “Níveis e atributos de registros” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.
O que vou aprender em “Níveis e atributos de registros”?
Adicione contexto aos registros Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Go Academy?
Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Níveis e atributos de registros”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Go Academy?
Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Por que usar registros estruturados
- Manipuladores de slog
- Níveis e atributos de registros
- Manipuladores personalizados