Skip to content
SP StackPractices
beginner Por StackPractices

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

  • 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 dinamicoControl 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.

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.

Mejores Practicas

  • 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.

FAQs

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.