#!/bin/bash
# Script de limpieza de logs
# Ejecuta a las 3:00 AM

set -e

echo "[$(date '+%Y-%m-%d %H:%M:%S')] Iniciando limpieza de logs..."

# Directorio de logs
LOGS_DIR="/var/www/html/logs"

if [ ! -d "$LOGS_DIR" ]; then
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] ⚠️  Directorio de logs no encontrado: $LOGS_DIR"
    exit 0
fi

# Contar archivos antes de limpiar
BEFORE_COUNT=$(find "$LOGS_DIR" -name "*.log" -type f | wc -l)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Archivos de log encontrados: $BEFORE_COUNT"

# Eliminar logs más antiguos de 30 días
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Eliminando logs antiguos (>30 días)..."
find "$LOGS_DIR" -name "*.log" -type f -mtime +30 -delete

# Comprimir logs entre 7-30 días
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Comprimiendo logs antiguos (7-30 días)..."
find "$LOGS_DIR" -name "*.log" -type f -mtime +7 -mtime -30 -exec gzip {} \; 2>/dev/null || true

# Limpiar logs .gz más antiguos de 30 días
find "$LOGS_DIR" -name "*.log.gz" -type f -mtime +30 -delete

# Contar archivos después de limpiar
AFTER_COUNT=$(find "$LOGS_DIR" -name "*.log" -o -name "*.log.gz" -type f | wc -l)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Archivos de log restantes: $AFTER_COUNT"

# Calcular espacio liberado
SPACE_USED=$(du -sh "$LOGS_DIR" | cut -f1)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Espacio usado por logs: $SPACE_USED"

# Truncar logs muy grandes (>100MB)
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Truncando logs muy grandes..."
find "$LOGS_DIR" -name "*.log" -type f -size +100M -exec sh -c 'echo "Log truncado el $(date)" > "$1"' _ {} \;

echo "[$(date '+%Y-%m-%d %H:%M:%S')] ✅ Limpieza de logs completada"
