typestar

Logging estructurado en Go

log/slog escribe pares clave-valor, con un nivel, en texto o JSON.

func logging() string {
    var out strings.Builder
    logger := slog.New(slog.NewJSONHandler(&out, &slog.HandlerOptions{
        Level: slog.LevelInfo,
    }))

    logger.Info("loaded content", "steps", 1015, "langs", 10)
    logger.Debug("not shown at info level")

    request := logger.With("request_id", "abc123")
    request.Warn("slow response", slog.Duration("took", 250*time.Millisecond))

    return fmt.Sprintf("%d log lines",
        len(strings.Split(strings.TrimSpace(out.String()), "\n")))
}

Cómo funciona

  1. Los atributos son pares después del mensaje.
  2. With devuelve un logger que carga campos por ti.
  3. Un handler JSON es lo que un pipeline de logs quiere.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
15
Caracteres a escribir
460
Tokens
116
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 66 segundos.

Escribe este fragmento

Paso 2 de 2 en Programas y logging; paso 15 de 26 en Biblioteca estándar y estructura del proyecto.

← Anterior Siguiente →