beginner Por Mathias Paulenko

Documento de Estandares de Logging

Una plantilla de documento para definir convenciones de logging estructurado, niveles de log, retencion y requisitos de observabilidad en servicios.

Nota para desarrolladores hispanohablantes: Esta guía incluye ejemplos y convenciones de nomenclatura adaptadas a equipos que trabajan en español. Cuando existen diferencias significativas en terminología técnica entre el inglés y el español, se indican explícitamente para facilitar la comunicación en equipos multiculturales.

Descripcion General

Un Documento de Estandares de Logging define como los servicios, aplicaciones e infraestructura producen logs. Logging consistente facilita la depuracion, el monitoreo, la investigacion de seguridad y el cumplimiento. Esta plantilla cubre niveles de log, formatos estructurados, campos requeridos, retencion, muestreo y reglas de seguridad.

Cuando Usar

  • For alternatives, see Complete Guide to Observability with the Grafana Stack.

  • Incorporar un nuevo servicio o equipo de desarrollo.

  • Consolidar logs de multiples sistemas en una plataforma central de observabilidad.

  • Prepararse para una auditoria de seguridad o cumplimiento.

  • Investigar un incidente de produccion donde los logs estan incompletos o inconsistentes.

  • Definir una estrategia de logging para microservicios o ambientes serverless.

Prerequisitos

  • Una plataforma de agregacion de logs como ELK, Splunk, Datadog, Grafana Loki o CloudWatch.
  • Un estandar de timestamp y politica de zona horaria compartida.
  • Una lista de eventos criticos que siempre deben registrarse.
  • Un acuerdo sobre clasificacion de datos sensibles y reglas de redaccion de logs.

Solucion

Documento

1. Niveles de Log

NivelUsoEjemplo
DEBUGInformacion detallada de diagnostico durante desarrollocache miss para clave user:1234
INFOEventos normales de la aplicacionusuario inicio sesion, orden completada
WARNSituaciones inesperadas pero recuperablestimeout de conexion, reintentando
ERRORFallas que afectan la operacionpasarela de pagos devolvio 500
FATALFallas criticas que requieren atencion inmediatabase de datos no disponible, apagando servicio

Lineamientos:

  • DEBUG debe estar deshabilitado en produccion por defecto.
  • INFO es el nivel de produccion por defecto para la mayoria de servicios.
  • ERROR debe disparar una alerta o ticket.
  • FATAL debe activar una pagina al equipo de guardia.

2. Formato de Log Estructurado

Todos los logs deben emitirse como JSON con los siguientes campos requeridos:

CampoTipoDescripcionEjemplo
timestampISO 8601Hora del evento en UTC2026-06-27T14:30:00Z
levelstringNivel de logINFO
servicestringNombre del servicio o aplicacionpayment-service
environmentstringAmbienteproduction
messagestringResumen legibleOrder 12345 completed
correlation_idstringID de traza de la solicitudabc-123-def
span_idstringID de span de OpenTelemetryspan-xyz-789

Campos opcionales:

  • user_id: Identidad del usuario asociado al evento.
  • tenant_id: Identificador para aislamiento multi-tenant.
  • duration_ms: Tiempo tomado para completar una operacion.
  • error_code: Codigo de error estable para manejo programatico.
  • source_file: Archivo y linea donde se emitio el log.

3. Categorias de Eventos Requeridos

CategoriaEventos a RegistrarNivel
AutenticacionInicio de sesion, cierre de sesion, inicio fallido, desafio MFAINFO / WARN
AutorizacionAcceso denegado, escalacion de permisosWARN
Cambios de datosCrear, actualizar, eliminar registros sensiblesINFO
ErroresExcepciones, fallas externas, reintentosERROR
RendimientoConsultas lentas, alta latencia, timeoutsWARN
SeguridadActividad sospechosa, limites de tasa, solicitudes bloqueadasWARN
OperacionalesInicio, apagado, cambios de configuracionINFO
NegocioOrden colocada, pago recibido, flujo completadoINFO

4. Datos Sensibles y Redaccion

Tipo de DatoRegistradoRedaccion
ContrasenasNuncaRedactar o excluir
Numeros de tarjeta de creditoNuncaTokenizar o excluir
Claves APINuncaRedactar o excluir
Nombres personalesCon aprobacionEnmascarar si no es requerido
Direcciones de correoPermitidoEnmascarar parcialmente para no administradores
Direcciones IPPermitidoPermitido para logs de seguridad
IDs de usuarioPermitidoPermitido

Reglas:

  • Nunca registrar secretos o credenciales.
  • Usar listas permitidas para campos de datos personales.
  • Redactar o tokenizar valores antes de registrarlos.
  • Cifrar logs si contienen datos sensibles.

5. Retencion y Muestreo

Tipo de LogRetencionMuestreoNotas
Logs de aplicacion30 dias100%Conservar todos para depuracion
Logs de seguridad1 año100%Requisito de cumplimiento
Logs de auditoria7 años100%Legal y regulatorio
Logs de debug7 dias100%Solo cuando esta habilitado
Logs de traza de alto volumen14 dias1% o liveControl de costos

6. Agregacion y Transporte de Logs

RequisitoRegla
TransporteEnviar logs a la plataforma central con manejo de backpressure.
OrdenamientoUsar timestamps para ordenar; tolerar pequeño desfase de reloj.
BufferingAlmacenar localmente si el recolector no esta disponible.
CodificacionUsar JSON UTF-8.
RespaldosReplicar logs criticos a un almacenamiento secundario.
AlertasEnrutar logs ERROR y FATAL al sistema de alertas.

Explicacion

Logging consistente transforma archivos de texto ruidosos en datos estructurados y buscables. Al definir niveles, campos y retencion, los equipos pueden correlacionar eventos entre servicios, investigar incidentes mas rapido y cumplir con requisitos regulatorios. Los logs estructurados tambien se integran con tracing y metricas para crear una vision completa de observabilidad.

Ejemplo de Formato de Log Estructurado

{
  "timestamp": "2026-07-11T10:55:32.123Z",
  "level": "ERROR",
  "service": "auth-service",
  "environment": "production",
  "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "userId": "usr_8f7e6d5c",
  "message": "Validacion JWT fallo",
  "errorCode": "AUTH_JWT_INVALID",
  "context": {
    "endpoint": "/api/v1/auth/verify",
    "method": "POST",
    "statusCode": 401,
    "durationMs": 12,
    "ipAddress": "10.0.1.42",
    "userAgent": "MobileApp/2.3.1"
  },
  "error": {
    "type": "TokenExpiredError",
    "message": "jwt expirado",
    "stack": "TokenExpiredError: jwt expirado\n    at ..."
  }
}

Matriz de Decision de Niveles de Log

=== Cuando Usar Cada Nivel de Log ===

FATAL   - El sistema no puede continuar. El proceso terminara.
          Ejemplos: fallo de carga de config, error de binding de puerto, OOM

ERROR   - Operacion fallo pero el sistema continua.
          Ejemplos: request fallo, error de query DB, timeout de API externa

WARN    - Condicion inesperada pero recuperable.
          Ejemplos: retry exitoso, cache miss, uso de API deprecada

INFO    - Evento significativo de negocio u operacional.
          Ejemplos: login de usuario, orden realizada, despliegue iniciado

DEBUG   - Detalle diagnostico para troubleshooting.
          Ejemplos: estado de variable, params de query, contenido de cache

TRACE   - Flujo de ejecucion mas fino.
          Ejemplos: entrada/salida de funcion, conteo de iteracion de loop

REGLAS:
  - Produccion: INFO y superior (DEBUG/TRACE apagados)
  - Staging: DEBUG y superior
  - Desarrollo: TRACE y superior
  - Nunca loguear a DEBUG en produccion a menos que estes depurando
  - ERROR debe ser accionable — si no lo es, es INFO

Variantes

  • Estandares de logging en cloud: Adaptados para AWS CloudWatch, Azure Monitor o Google Cloud Logging.
  • Logging en contenedores y Kubernetes: Cubre shippers de logs sidecar, Fluentd y convenciones de logs de pods.
  • Logging enfocado en seguridad: Enfatiza eventos de auditoria, integridad y deteccion de manipulacion.
  • Logging serverless: Aborda funciones de corta duracion, cold starts y recoleccion centralizada de logs.
  • Logging movil o cliente: Se enfoca en privacidad, batching y almacenamiento offline.

Lo que funciona

  • Usa un unico formato estructurado en todos los servicios.
  • Incluye un correlation ID en cada solicitud para habilitar tracing distribuido.
  • Registra resultados en limites de negocio, no cada paso interno.
  • Manten los mensajes de log concisos y agrega contexto como campos estructurados.
  • Evita registrar datos sensibles por defecto.
  • Usa niveles de log consistentes para que las alertas sean significativas.
  • Revisa las politicas de retencion contra costos y necesidades de cumplimiento.
  • Prueba las reglas de parseo y alertas como parte de los despliegues.

Errores Comunes

  • Registrar todo a nivel INFO, dificultando detectar problemas reales.
  • Escribir logs como texto plano que no puede parsearse automaticamente.
  • Omitir timestamps o usar formatos inconsistentes.
  • Incluir contrasenas o tokens en logs.
  • No incluir suficiente contexto para reproducir una falla.
  • Conservar logs por siempre y aumentar costos de almacenamiento innecesariamente.
  • No correlacionar logs entre servicios durante un incidente.

Troubleshooting

  • No logs for a failing request: verify log shipping, retention, and that the request reached the service.
  • Alert fires but the service is healthy: tune thresholds and use multi-signal alerts.
  • Dashboard shows stale data: check refresh intervals, query range, and data source lag. Verify that the metric still exists.
  • High cardinality metrics explode costs: drop high-cardinality labels, aggregate before ingest, or use sampling.
  • Trace is incomplete across services: ensure all services propagate trace context. Instrument async and background jobs.

Lectura Adicional

  • Documentación oficial: consulta la referencia actualizada del framework o herramienta utilizada.
  • Guías relacionadas: explora las guías de logging y observability para profundizar.
  • Patrones complementarios: revisa los patrones de diseño aplicables a tu stack tecnológico.
  • Postmortems públicos: estudia incidentes reales de equipos que enfrentaron problemas similares en producción.

Notas de Producción

  • Despliega gradualmente usando canary o blue-green para detectar regresiones temprano.
  • Configura alertas para errores, latencia p99 y tasa de fallos antes de habilitar en producción.
  • Documenta el rollback en el runbook; prueba el procedimiento en staging al menos una vez por trimestre.
  • Revisa logs estructurados con correlation IDs para trazar requests end-to-end en incidentes.

Puntos Clave

  • Aplica documento de estandares de logging cuando necesites una solución práctica para tu caso de uso.
  • Monitorea el rendimiento después de implementar; mide latencia, errores y uso de recursos antes y después.
  • Revisa la sección de Troubleshooting ante errores comunes; la mayoría tienen causa raíz documentada con solución.
  • Mantén dependencias actualizadas y ejecuta tests en CI para prevenir regresiones en producción.

Errores Comunes en Producción

  • Dejar campos requeridos vacíos o usar respuestas vagas de una palabra.
  • Llenar el documento una vez y nunca actualizarlo cuando cambia el alcance o las decisiones.
  • Guardar el documento donde el equipo no lo busque durante incidentes o revisiones.
  • No asignar un responsable, fecha límite o cadencia de revisión.
  • Copiar texto base sin eliminar secciones que no aplican.
  • Saltar el control de versiones, lo que impide rollback y responsabilidad.
  • No vincular el documento con decisiones relacionadas o acciones de seguimiento.
  • Evitar revisiones trimestrales que retirarían secciones obsoletas o sin uso.

Preguntas frecuentes

Debemos registrar a nivel DEBUG en produccion?
No, DEBUG debe estar deshabilitado por defecto. Habilitarlo temporalmente para solucionar problemas especificos y desactivarlo cuando se resuelva el incidente.
Que es un correlation ID?
Un correlation ID es un identificador unico que se pasa a traves de todos los servicios que manejan una misma solicitud. Permite agrupar entradas de log relacionadas en un sistema distribuido.
Como manejamos datos sensibles en logs?
Usa un enfoque de lista permitida: solo registra campos explicitamente aprobados, y redacta o tokeniza valores sensibles antes de que lleguen al flujo de logs.
Como implementamos correlation IDs en una arquitectura de microservicios?
Genera un correlation ID en el API gateway para cada request entrante. Propagalo via headers HTTP (ej., X-Correlation-Id). Cada servicio downstream lee el header, lo incluye en todas las entradas de...
Que es log sampling y cuando deberiamos usarlo?
Log sampling significa loguear solo un porcentaje de eventos para reducir volumen y costo. Usa sampling para logs de alto volumen y bajo valor (ej., respuestas de health check, requests de assets...
Como manejamos los costos de almacenamiento de logs?
Controla costos mediante: retencion en tiers (almacenamiento hot por 7-30 dias, archivo cold por mas tiempo), sampling de logs de alto volumen, compresion de archivos de log, exclusion de endpoints...
Cual es la diferencia entre logs, metricas y traces?
Los logs son eventos discretos con timestamps — que paso en un momento especifico. Las metricas son medidas agregadas en el tiempo — uso de CPU, conteo de requests, tasa de error. Los traces siguen...
Como probamos el logging en CI/CD?
Agrega tests que verifiquen: el formato de log es JSON valido, los campos requeridos estan presentes (timestamp, level, service, correlationId), los datos sensibles no se loguean, los niveles de log...