0Pricing
Go Academy · Aula

Manipuladores de slog

Manipuladores de texto e JSON

Manipuladores de slog é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 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.

Os manipuladores determinam o formato

No slog, um registrador chama um Handler para formatar e escrever cada registro. Trocar o manipulador altera o formato da saída sem modificar suas chamadas de registro.

TextHandler

slog.NewTextHandler escreve linhas key=value fáceis de ler. É adequado para desenvolvimento local e terminais.

package main

import (
    "log/slog"
    "os"
)

func main() {
    h := slog.NewTextHandler(os.Stdout, nil)
    logger := slog.New(h)
    logger.Info("hello", "env", "dev")
}

JSONHandler

slog.NewJSONHandler emite um objeto JSON por linha. É ideal para pipelines de registros de produção.

package main

import (
    "log/slog"
    "os"
)

func main() {
    h := slog.NewJSONHandler(os.Stdout, nil)
    logger := slog.New(h)
    logger.Info("hello", "env", "prod")
}

Criando um registrador

slog.New(handler) envolve um manipulador em um registrador. Você chama logger.Info, logger.Error etc. nessa instância.

logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))

HandlerOptions

O segundo argumento do construtor de um manipulador é *slog.HandlerOptions. Passe nil para usar os padrões ou configure o nível e a localização da origem.

opts := &slog.HandlerOptions{
    Level:     slog.LevelDebug,
    AddSource: true,
}
h := slog.NewJSONHandler(os.Stdout, opts)

Escrevendo em um arquivo ou em uma memória intermediária

Os manipuladores aceitam qualquer io.Writer. Você pode registrar dados em um arquivo, em uma memória intermediária para testes ou na saída padrão. Esse desacoplamento é um princípio importante do design do slog.

f, _ := os.Create("app.log")
logger := slog.New(slog.NewJSONHandler(f, nil))

Definindo o registrador padrão

slog.SetDefault(logger) faz com que as funções no nível do pacote (slog.Info etc.) usem seu manipulador. Defina isso uma vez na inicialização.

slog.SetDefault(slog.New(slog.NewJSONHandler(os.Stdout, nil)))
slog.Info("now JSON by default")

Saída de texto versus JSON

A mesma chamada, em dois formatos:

  • Texto: time=... level=INFO msg=hello env=dev
  • JSON: {"time":"...","level":"INFO","msg":"hello","env":"dev"}

Escolhendo um manipulador

Regra geral:

  • Local/desenvolvimento: TextHandler (legível)
  • Produção/agregado: JSONHandler (analisável)

Decida por meio de uma variável de ambiente para que o mesmo binário se adapte.

Escrevendo uma configuração reutilizável

Centralize a criação do registrador para que todo o aplicativo compartilhe uma única configuração.

func newLogger(prod bool) *slog.Logger {
    if prod {
        return slog.New(slog.NewJSONHandler(os.Stdout, nil))
    }
    return slog.New(slog.NewTextHandler(os.Stdout, nil))
}

Executável: alternando manipuladores

Este programa registra o mesmo evento por meio dos dois manipuladores para que você possa comparar os formatos.

package main

import (
    "log/slog"
    "os"
)

func main() {
    text := slog.New(slog.NewTextHandler(os.Stdout, nil))
    js := slog.New(slog.NewJSONHandler(os.Stdout, nil))
    text.Info("login", "user", "ada")
    js.Info("login", "user", "ada")
}

Verificação rápida

Teste sua compreensão sobre os manipuladores do slog.

Recapitulação

Você aprendeu sobre os manipuladores do slog:

  • Os manipuladores formatam e escrevem registros; o registrador os chama
  • NewTextHandler para pessoas, NewJSONHandler para máquinas
  • Os manipuladores aceitam qualquer io.Writer e *HandlerOptions
  • slog.SetDefault conecta as funções no nível do pacote

Perguntas Frequentes

A aula “Manipuladores de slog” é grátis?

Sim — o texto completo de “Manipuladores de slog” é 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 “Manipuladores de slog”?

Manipuladores de texto e JSON 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 2 de 4.

Quanto tempo leva a aula “Manipuladores de slog”?

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