El mayor portal de MU Online de Brasil — desde 2003
Tutorial Intermedio Infraestructura

Cómo configurar logs rotativos y retención en el servidor de MU

Configura la rotación automática, la compresión y la política de retención de los logs de tu servidor de MU Online para evitar el disco lleno, mantener un historial útil y aún tener rastros para investigar fraudes y caídas.

GA Gabriel · Actualizado el 18 mar 2025 · ⏱ 14 min de lectura
Respuesta rápida

Los logs son la memoria de tu servidor de MU Online. Cuando un jugador acusa a otro de duplicar ítems, cuando el GameServer se cuelga sin explicación, o cuando necesitas entender por qué la base de datos se puso lenta a las 3 de la mañana, es en los logs donde está la respuesta. El problema es que l

Los logs son la memoria de tu servidor de MU Online. Cuando un jugador acusa a otro de duplicar ítems, cuando el GameServer se cuelga sin explicación, o cuando necesitas entender por qué la base de datos se puso lenta a las 3 de la mañana, es en los logs donde está la respuesta. El problema es que los logs sin gestión se vuelven un pasivo: crecen sin parar, llenan el disco y tumban justamente el servidor que deberían ayudar a mantener en línea. La solución es configurar rotación (dividir los logs en pedazos manejables), compresión (reducir el espacio de los antiguos) y retención (definir por cuánto tiempo guardar cada tipo). Esta guía muestra cómo montar todo eso en Windows, con scripts listos y una política de retención pensada por categoría. Los valores citados son ejemplos que varían por proveedor/versión, así que ajústalos a tu realidad.

Requisitos previos

Para configurar logs rotativos necesitas:

  • Acceso administrativo al servidor (RDP en Windows Server) con permiso para crear Tareas Programadas.
  • Conocimiento de dónde graba sus logs cada componente: ConnectServer, GameServer, DataServer y SQL Server.
  • Espacio en disco suficiente para al menos algunos días de log antes de la primera compresión.
  • PowerShell disponible (estándar en Windows Server) para los scripts de rotación.
  • Una decisión de política de retención por tipo de log (lo veremos más adelante).
  • Un servidor base funcional. Si aún estás montando, empieza por cómo crear un servidor de MU Online.

Paso 1: Mapea todos los logs del servidor

Antes de rotar cualquier cosa, necesitas saber qué existe y dónde. Un servidor de MU típico genera logs en varios lugares. Haz un inventario:

FuenteUbicación típica (ejemplo)Contenido
GameServerGameServer\Log\Login, combate, comercio, comandos, errores
ConnectServerConnectServer\Log\Conexiones, selección de servidor
DataServerDataServer\Log\Acceso a la base de datos, guardados
SQL Servercarpeta LOG de la instanciaErrores de la base, deadlocks
Sitio/Panelcarpeta de logs del servidor webAccesos, registros, donaciones

Las rutas exactas varían por proveedor/versión del emulador. Documenta las tuyas en un archivo de referencia; eso ahorra tiempo en todo mantenimiento futuro.

Paso 2: Elige la estrategia de rotación

Existen dos enfoques principales de rotación, y puedes combinarlos:

  1. Rotación por fecha: un archivo nuevo por día (por ejemplo, GameServer-2025-01-31.log). Muchos emuladores ya lo hacen nativamente. Es la más simple y segura, porque nunca toca el archivo que el proceso está escribiendo.
  2. Rotación por tamaño: cuando el archivo alcanza un límite (por ejemplo, 100 MB), se cierra, se renombra y empieza uno nuevo. Útil para logs muy verbosos que crecen rápido dentro de un mismo día.

Para la mayoría de los servidores, la rotación por fecha es el punto de partida ideal. Si algún log específico crece descontroladamente dentro del día, añádele rotación por tamaño.

> Verifica si tu emulador ya rota por fecha. Si es así, tu trabajo se reduce a comprimir y retener. Si no, los scripts de abajo se encargan de eso.

Paso 3: Crea el script de rotación y compresión

El corazón de la automatización es un script de PowerShell que recorre la carpeta de logs, comprime los archivos antiguos y borra los que pasaron del plazo. Guarda algo como C:\MuServer\Scripts\RotacionarLogs.ps1:

# Configuración
$pastaLogs   = "C:\MuServer\GameServer\Log"
$diasParaZipar   = 1     # comprime logs con más de 1 día
$diasParaApagar  = 30    # borra archivos con más de 30 días

$agora = Get-Date

# 1) Comprime logs antiguos aún no comprimidos
Get-ChildItem -Path $pastaLogs -Filter *.log |
    Where-Object { $_.LastWriteTime -lt $agora.AddDays(-$diasParaZipar) } |
    ForEach-Object {
        $zip = "$($_.FullName).zip"
        Compress-Archive -Path $_.FullName -DestinationPath $zip -Force
        Remove-Item $_.FullName -Force
        Write-Output "Comprimido: $($_.Name)"
    }

# 2) Borra archivos comprimidos más allá del plazo de retención
Get-ChildItem -Path $pastaLogs -Filter *.zip |
    Where-Object { $_.LastWriteTime -lt $agora.AddDays(-$diasParaApagar) } |
    ForEach-Object {
        Remove-Item $_.FullName -Force
        Write-Output "Eliminado por retención: $($_.Name)"
    }

Ajusta $diasParaZipar y $diasParaApagar según la política definida en el siguiente paso. Repite el bloque (o parametriza el script) para cada carpeta de log mapeada.

Paso 4: Define la política de retención por categoría

No todo log tiene el mismo valor. Tratarlos a todos igual es un error: o guardas demasiada basura, o borras demasiado pronto aquello que necesitarías en una investigación. Sepáralos por categoría y define retenciones diferentes.

Categoría de logRetención sugerida (ejemplo)Justificación
Seguridad / antifraudeLarga (meses)Las investigaciones surgen tarde
Transacciones valiosas (ítems, donaciones)Larga (meses)Chargeback y disputas
Errores críticos del servidorMedia-larga (semanas a meses)Diagnóstico de bugs recurrentes
Login / conexionesMedia (semanas)Soporte y patrones de acceso
Depuración verbosaCorta (pocos días)Volumen alto, valor efímero

Los plazos exactos varían por proveedor/versión y por tu capacidad de disco y obligaciones legales. El principio es constante: retén más tiempo lo que es caro de perder y descarta rápido lo que es barato de recrear.

Paso 5: Agenda la rotación con Tareas Programadas

Con el script listo, agéndalo para que corra automáticamente todos los días. Usa el Programador de Tareas de Windows. Puedes crearlo por la interfaz gráfica o por línea de comandos:

# Crea una tarea diaria a las 05:00 para rotar logs
$acao   = New-ScheduledTaskAction -Execute "powershell.exe" `
    -Argument "-NoProfile -ExecutionPolicy Bypass -File C:\MuServer\Scripts\RotacionarLogs.ps1"

$gatilho = New-ScheduledTaskTrigger -Daily -At 5:00AM

Register-ScheduledTask -TaskName "MU-RotacionarLogs" `
    -Action $acao -Trigger $gatilho -RunLevel Highest `
    -Description "Comprime y aplica retencion en los logs de MU"

Elige un horario de baja actividad (madrugada) para que la compresión y la eliminación no disputen el I/O de disco con el pico de jugadores. Eso evita que la propia rotación se vuelva causa de lag.

Paso 6: Trata el log de SQL Server aparte

SQL Server tiene sus propios mecanismos y no debe gestionarse solo con scripts de archivo. Dos puntos merecen atención:

  1. Log de errores de SQL Server (ERRORLOG): por defecto SQL Server mantiene algunos archivos históricos y cicla en el reinicio. Puedes aumentar el número de archivos retenidos y forzar el ciclo periódicamente:
-- Fuerza la creacion de un nuevo archivo de ERRORLOG
EXEC sp_cycle_errorlog;
  1. Log de transacciones de la base (.ldf): este NO es un log de texto para lectura; es parte del mecanismo de la base de datos. Nunca borres el .ldf. En vez de eso, mantén el modelo de recuperación adecuado y haz backups del log de transacciones si estás en modo FULL, para que no crezca indefinidamente. La configuración ideal varía por versión y por tu estrategia de backup.

> Confundir el log de transacciones de SQL (.ldf) con un log de texto descartable y borrarlo es un error grave que puede corromper la base de datos. Trata el .ldf por la vía de los backups, nunca por eliminación manual.

Paso 7: Monitorea el crecimiento y valida la rotación

Configurar no basta; necesitas confirmar que la rotación está funcionando y que el disco no corre riesgo. Monta un monitoreo ligero:

  1. Verifica periódicamente el espacio libre en disco de la partición de logs.
  2. Confirma que los archivos .zip se están creando y los antiguos se remueven en el plazo.
  3. Revisa los logs de la propia Tarea Programada para garantizar que corre sin error.

Un script rápido para ver el tamaño ocupado por logs en cada carpeta:

$pastas = @(
    "C:\MuServer\GameServer\Log",
    "C:\MuServer\ConnectServer\Log",
    "C:\MuServer\DataServer\Log"
)
foreach ($p in $pastas) {
    if (Test-Path $p) {
        $tamMB = (Get-ChildItem $p -Recurse -File |
            Measure-Object Length -Sum).Sum / 1MB
        Write-Output ("{0,-45} {1,8:N1} MB" -f $p, $tamMB)
    }
}

Si una carpeta crece mucho más rápido que las otras, revisa el nivel de verbosidad de ese componente. Muchas veces se puede reducir el log de depuración sin perder la información que importa.

Errores comunes y soluciones

ErrorCausa probableSolución
El disco se llena y el servidor caeSin rotación ni retenciónAutomatiza la compresión y la eliminación por edad
La rotación causa lag en el picoAgendada en horario con movimientoCorre la rotación en la madrugada
Se perdió una prueba de fraudeRetención demasiado cortaDefine una retención larga para los logs de seguridad
Se borró el archivo .ldf de SQLConfundirlo con un log de textoNunca borres el .ldf; usa backup del log de transacciones
El script falla en silencioSin chequeo de la Tarea ProgramadaMonitorea el historial de la tarea y el espacio en disco
La compresión corrompe el log activoComprimir un archivo abierto por el procesoComprime solo archivos de días anteriores
Todos los logs con la misma retenciónPolítica únicaSepáralos por categoría y reténlos de forma diferente

Lista de verificación de lanzamiento

  • Mapeé todas las ubicaciones de log (GameServer, ConnectServer, DataServer, SQL, sitio).
  • Elegí la estrategia de rotación (por fecha y, si es necesario, por tamaño).
  • Creé el script de rotación, compresión y eliminación por edad.
  • Definí una política de retención diferente por categoría de log.
  • Agendé la rotación para la madrugada vía Tareas Programadas.
  • Configuré el ciclo del ERRORLOG de SQL Server aparte.
  • Confirmé que el log de transacciones (.ldf) se trata por backup, no por eliminación.
  • Solo comprimo archivos de días anteriores, nunca el log activo.
  • Monté un monitoreo del espacio en disco y del historial de la tarea.
  • Validé que los archivos antiguos se comprimen y se remueven en el plazo.

Los logs bien gestionados son invisibles cuando todo va bien y valiosísimos cuando algo sale mal. Al rotar por fecha, comprimir los antiguos y retener cada categoría por el tiempo correcto, garantizas que el disco nunca se vuelva un cuello de botella y que, el día de la investigación, el rastro que necesitas todavía esté ahí. Es una de esas configuraciones que dan poco trabajo al principio y evitan mucho dolor de cabeza después.

Preguntas frecuentes

¿Por cuánto tiempo debo guardar los logs del servidor?

Depende del tipo de log. Los logs de error y de seguridad/antifraude vale la pena mantenerlos por más tiempo (semanas a meses) porque las investigaciones surgen después del hecho. Los logs de depuración verbosos pueden descartarse en pocos días. El período ideal varía por proveedor/versión y por tu capacidad de disco, así que equilibra utilidad contra espacio.

¿La rotación de log puede hacerse con el servidor en línea?

Sí, en la mayoría de los casos. Las estrategias por fecha generan un archivo nuevo por día sin tocar el actual. Ya mover un archivo abierto por el proceso puede requerir cuidado, pues algunos emuladores mantienen el handle abierto. Cuando haya duda, agenda la rotación para el reinicio diario o pruébala en un entorno controlado.

¿Los logs ocupan mucho espacio de verdad?

En servidores con movimiento sí. Los logs verbosos de GameServer y de base de datos pueden crecer varios GB por día. Sin rotación ni compresión, eso llena el disco y tumba el servidor. Comprimir los archivos antiguos reduce el tamaño de forma drástica, típicamente a una fracción del original, aunque la tasa varía por contenido.

¿Necesito herramientas externas para rotar logs en Windows?

No siempre. Puedes combinar el Programador de Tareas de Windows con scripts de PowerShell o batch para renombrar, comprimir y borrar logs por edad. Existen herramientas dedicadas que ayudan en entornos mayores, pero lo esencial se puede montar con lo que ya viene en el sistema.

¿Qué nunca debo borrar de los logs?

Evita descartar demasiado pronto los logs de seguridad, de transacciones importantes (ítems valiosos, comercio, donaciones) y de errores críticos. Esos son los que más vas a necesitar en investigaciones de fraude, chargeback o bug. Define una retención mayor para ellos y trata los logs de depuración como descartables.

GA
Editor de guías y builds

Gabriel cubre gameplay, builds de clases, PvP y progresión. Prueba cada estrategia en un servidor antes de publicar.

Sigue leyendo

Artículos relacionados