#!/bin/bash
# Script de limpieza de logs para chatWA
# Ejecutar manualmente o via cron: 0 3 * * * /home/www/chatWA/config/cleanup-logs.sh

CHATWA_DIR="/home/www/chatWA"
MAX_SIZE_MB=10
DAYS_TO_KEEP=7

echo "=== Limpieza de Logs chatWA - $(date) ==="

# Función para truncar logs grandes
truncate_if_large() {
    local file=$1
    local max_mb=$2
    
    if [ -f "$file" ]; then
        size=$(du -m "$file" | cut -f1)
        if [ "$size" -gt "$max_mb" ]; then
            echo "Truncando $file ($size MB > $max_mb MB)"
            # Guardar últimas 1000 líneas
            tail -n 1000 "$file" > "${file}.tmp"
            mv "${file}.tmp" "$file"
        fi
    fi
}

# Truncar logs principales si exceden límite
truncate_if_large "$CHATWA_DIR/debug.log" $MAX_SIZE_MB
truncate_if_large "$CHATWA_DIR/debug_log.txt" $MAX_SIZE_MB
truncate_if_large "$CHATWA_DIR/error.log" $MAX_SIZE_MB
truncate_if_large "$CHATWA_DIR/errores.txt" $MAX_SIZE_MB

# Eliminar logs rotados antiguos
echo "Eliminando logs rotados mayores a $DAYS_TO_KEEP días..."
find "$CHATWA_DIR" -name "*.log.*" -mtime +$DAYS_TO_KEEP -delete 2>/dev/null
find "$CHATWA_DIR" -name "*.txt.*" -mtime +$DAYS_TO_KEEP -delete 2>/dev/null
find "$CHATWA_DIR" -name "*.gz" -mtime +$DAYS_TO_KEEP -delete 2>/dev/null

# Mostrar estado actual
echo ""
echo "Estado actual de logs:"
du -sh "$CHATWA_DIR"/*.log "$CHATWA_DIR"/*.txt 2>/dev/null | sort -h

echo ""
echo "=== Limpieza completada ==="
