---
name: LogEntry
lang: go
domain: infra
version: "1.0.0"
algebraic: product
definition: |
  type LogEntry struct {
      Timestamp time.Time      `json:"timestamp"`
      Level     string         `json:"level"`
      Message   string         `json:"message"`
      Fields    map[string]any `json:"fields,omitempty"`
  }
description: "Entrada de log estructurada serializable a JSON. Modelo canonico para tests y pipelines de procesamiento de logs."
tags: [logging, log, entry, json, infra]
uses_types: []
file_path: "functions/infra/log_entry.go"
---

## Ejemplo

```go
entry := LogEntry{
    Timestamp: time.Now(),
    Level:     "INFO",
    Message:   "server starting",
    Fields:    map[string]any{"port": 8484, "app": "api"},
}
data, _ := json.Marshal(entry)
// {"timestamp":"2026-04-18T10:00:00Z","level":"INFO","message":"server starting","fields":{"app":"api","port":8484}}
```

## Notas

Tipo producto — cuatro campos, todos exportados. El formato JSON de slog usa claves diferentes (`time`, `level`, `msg`) pero este tipo sirve como adaptador cuando se deserializan logs para tests o para pipelines downstream. `Fields` es opcional (omitempty) y permite adjuntar cualquier contexto key-value.
