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
- Los atributos son pares después del mensaje.
Withdevuelve un logger que carga campos por ti.- Un handler JSON es lo que un pipeline de logs quiere.
Palabras clave y builtins usados aquí
funclenreturnstringvar
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.
Paso 2 de 2 en Programas y logging; paso 15 de 26 en Biblioteca estándar y estructura del proyecto.