0Pricing
Go Academy · Lección

Niveles y atributos de logs

Añada contexto a los logs

Niveles y atributos de logs es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Añadir contexto a los logs

Un mensaje aislado indica qué ha ocurrido; los atributos proporcionan los detalles que hacen que los logs sean útiles: qué usuario, qué solicitud y cuánto tiempo ha tardado.

Los cuatro niveles

Niveles de slog, de menor a mayor gravedad:

  • Debug (-4)
  • Info (0)
  • Warn (4)
  • Error (8)

Los niveles son enteros, por lo que puede definir niveles personalizados intermedios.

Filtrar por nivel

Establezca un nivel mínimo en HandlerOptions. Los registros que estén por debajo se descartan de forma eficiente.

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

Además de los argumentos clave-valor sin tipo, slog ofrece constructores tipados que evitan errores y son más 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 qué usar atributos tipados

Los atributos tipados detectan en tiempo de compilación el error de «número impar de argumentos» y permiten que el handler omita la reflexión. Prefiéralos en las rutas críticas.

Agrupar atributos

slog.Group anida campos relacionados bajo una misma clave.

slog.Info("req",
    slog.Group("http",
        slog.String("method", "GET"),
        slog.Int("status", 200),
    ),
)

Logger.With para compartir contexto

logger.With(...) devuelve un logger hijo que añade los mismos atributos a cada mensaje. Es perfecto para un ID de solicitud.

reqLog := logger.With("requestID", "abc-123")
reqLog.Info("started")
reqLog.Info("finished")

Logging consciente del contexto

Las variantes *Context (por ejemplo, InfoContext) transportan un context.Context, lo que permite a los handlers extraer los ID de trazas.

slog.InfoContext(ctx, "handling", "path", "/api")

Niveles dinámicos

Use un slog.LevelVar para cambiar el nivel en tiempo de ejecución (por ejemplo, subirlo a Debug al investigar un incidente) sin reiniciar la aplicación.

var lvl slog.LevelVar
lvl.Set(slog.LevelInfo)
h := slog.NewTextHandler(os.Stdout, &slog.HandlerOptions{Level: &lvl})
// later: lvl.Set(slog.LevelDebug)

Errores como atributos

Añada los errores como atributos para que puedan consultarse, en lugar de concatenarlos en el mensaje.

slog.Error("save failed", slog.String("err", err.Error()), slog.Int("retry", 2))

Ejecutable: niveles y With

Este programa filtra por nivel y usa un logger hijo con contexto compartido.

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))
}

Comprobación rápida

Compruebe lo que ha aprendido sobre niveles y atributos.

Resumen

Ha aprendido sobre niveles y atributos:

  • Hay cuatro niveles integrados; filtre con HandlerOptions.Level
  • Los atributos tipados (slog.String, slog.Int) son más seguros y rápidos
  • slog.Group anida campos; logger.With comparte contexto
  • LevelVar permite cambiar los niveles en tiempo de ejecución

Preguntas frecuentes

¿La lección «Niveles y atributos de logs» es gratis?

Sí — el texto completo de «Niveles y atributos de logs» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Niveles y atributos de logs»?

Añada contexto a los logs Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Niveles y atributos de logs»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué usar logs estructurados
  2. Handlers de slog
  3. Niveles y atributos de logs
  4. Handlers personalizados
← Volver a Go Academy