Logs específicos por aplicación en Python

Clase 16 de 22Curso de Despliegue de Aplicaciones Python en la Nube

Resumen

Configurar logs por aplicación en despliegues Python con Nginx y uWSGI permite detectar errores rápido, evitar mezclar información entre sitios y mejorar la seguridad. Aquí verás cómo agrupar logs, reiniciar servicios, revisar errores de uWSGI, usar tail -f para monitorear en tiempo real y por qué activar debug solo de forma temporal.

¿Por qué configurar logs por aplicación en Nginx y uWSGI?

Separar los logs de acceso y error por sitio evita confusiones cuando hay múltiples proyectos en el servidor. Al fallar un cambio, puedes ir directo al archivo correcto y diagnosticar en minutos.

  • Agrupar por aplicación: define rutas específicas de logs para cada sitio. Evita mezclar eventos entre proyectos.
  • Depuración más simple: identifica si el error viene de Nginx o del lado de Python/uWSGI.
  • Seguridad: no expongas debug en producción. Maneja detalles sensibles en archivos y variables de entorno (.env).

¿Cómo aplicar cambios y usar logs para detectar errores?

Actualizar una rama, reinstalar dependencias y reiniciar servicios puede introducir fallos. Los logs guían el diagnóstico paso a paso.

¿Cómo cambiar de rama a develop con Git?

  • Verifica el estado:
git status
  • Resetea cambios locales si aplica:
git reset -r
  • Trae ramas remotas y cambia a develop:
git pull
# luego realiza el switch a develop

¿Cómo reinstalar dependencias y reiniciar uWSGI?

  • Activa el entorno virtual:
bin activate
  • Instala dependencias actualizadas:
pip install -r requirements
  • Reinicia uWSGI para aplicar cambios:
sudo service uwsgi restart

¿Cómo leer logs de uWSGI y encontrar el error?

  • Revisa logs de uWSGI con privilegios:
sudo cat /var/log/... # navega hasta el archivo de tu app
  • Si ves un 400 repetido, habilita debug temporalmente en settings de Django para entender el origen. Luego desactívalo.
  • Ejemplo típico: el dominio debía incluirse completo en la configuración y una rama lo modificó al cambiar de main a develop. Ajusta y recarga.

Puntos clave: - Usar debug solo para validar. Expone IP del servidor, certificados y variables. No lo dejes activo. - Regresa la configuración a su estado seguro tras identificar el problema.

¿Cómo agrupar logs en Nginx y analizarlos en tiempo real?

Definir rutas de access_log y error_log por proyecto en Nginx crea archivos separados, claros y auditables.

¿Cómo definir access_log y error_log por sitio?

Edita el sitio en etc/nginx/sites-enabled con permisos y agrega rutas específicas:

# dentro del server o location correspondiente
access_log /var/log/nginx/deploy_with_python_access.log;
error_log  /var/log/nginx/deploy_with_python_error.log;
  • Usa nombres que reflejen la aplicación: por ejemplo, deploy_with_python_access.log.
  • Guarda y valida la configuración:
nginx -t
  • Reinicia Nginx si todo está correcto:
sudo service NGINX restart

¿Cómo seguir los logs en tiempo real con tail -f?

  • Inspecciona el archivo de acceso o error:
tail -f /var/log/nginx/deploy_with_python_access.log
  • Verás el request, el user agent y el código de respuesta (por ejemplo, 200 cuando todo va bien).
  • Útil para ver qué peticiones llegan y cómo responde el servidor mientras haces pruebas.

Habilidades y conceptos que aplicarás: - Gestión de ramas con Git para pasar de main a develop. - Uso de entornos virtuales y actualización con pip install -r requirements. - Reinicio de servicios: sudo service uwsgi restart y sudo service NGINX restart. - Lectura y seguimiento de logs con sudo cat y tail -f. - Configuración de access_log y error_log en Nginx por aplicación y/o location. - Uso de debug solo temporal para diagnóstico seguro. - Variables de entorno con .env para no quemar valores sensibles.

Como reto: configura uWSGI para que guarde sus logs en un archivo específico de tu aplicación, igual que hiciste con Nginx. ¿Qué dudas te gustaría resolver en los comentarios?