package infra

import (
	"io"
	"log/slog"
)

// Logger wrappea slog.Logger con config del registry (nivel, output, formato, campos contextuales).
// Se crea con LoggerNew y se clona inmutablemente con LoggerWith anadiendo campos.
type Logger struct {
	Level  LogLevel       // nivel minimo filtrado
	Output io.Writer      // destino de los logs (stdout, stderr, file, buffer)
	Format string         // "json" | "text"
	Fields map[string]any // campos contextuales adjuntos al logger
	inner  *slog.Logger   // handler real de slog
}
