0Pricing
Go Academy · Aula

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.Group aninha campos; logger.With compartilha o contexto
  • LevelVar permite 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

  1. Por que usar registros estruturados
  2. Manipuladores de slog
  3. Níveis e atributos de registros
  4. Manipuladores personalizados
← Voltar para Go Academy