O maior portal de MU Online do Brasil — desde 2003
Tutorial Intermediário Infraestrutura

Como configurar logs rotativos e retenção no servidor de MU

Configure rotação automática, compactação e política de retenção dos logs do seu servidor de MU Online para evitar disco cheio, manter histórico útil e ainda ter rastros para investigar fraudes e travamentos.

GA Gabriel · Atualizado em 18 mar 2025 · ⏱ 14 min de leitura
Resposta rápida

Logs são a memória do seu servidor de MU Online. Quando um jogador acusa outro de duplicar itens, quando o GameServer trava sem explicação, ou quando você precisa entender por que o banco ficou lento às 3 da manhã, é nos logs que a resposta está. O problema é que logs sem gerenciamento viram um pass

Logs são a memória do seu servidor de MU Online. Quando um jogador acusa outro de duplicar itens, quando o GameServer trava sem explicação, ou quando você precisa entender por que o banco ficou lento às 3 da manhã, é nos logs que a resposta está. O problema é que logs sem gerenciamento viram um passivo: crescem sem parar, enchem o disco e derrubam justamente o servidor que deveriam ajudar a manter no ar. A solução é configurar rotação (dividir os logs em pedaços gerenciáveis), compactação (reduzir o espaço dos antigos) e retenção (definir por quanto tempo guardar cada tipo). Este guia mostra como montar tudo isso no Windows, com scripts prontos e uma política de retenção pensada por categoria. Os valores citados são exemplos que variam por provedor/versão, então ajuste à sua realidade.

Pré-requisitos

Para configurar logs rotativos você precisa de:

  • Acesso administrativo ao servidor (RDP no Windows Server) com permissão para criar Tarefas Agendadas.
  • Conhecimento de onde cada componente grava seus logs: ConnectServer, GameServer, DataServer e SQL Server.
  • Espaço em disco suficiente para pelo menos alguns dias de log antes da primeira compactação.
  • PowerShell disponível (padrão no Windows Server) para os scripts de rotação.
  • Uma decisão de política de retenção por tipo de log (veremos adiante).
  • Um servidor base funcional. Se você ainda está montando, comece por como criar servidor de MU Online.

Passo 1: Mapeie todos os logs do servidor

Antes de rotacionar qualquer coisa, você precisa saber o que existe e onde. Um servidor de MU típico gera logs em vários lugares. Faça um inventário:

FonteLocal típico (exemplo)Conteúdo
GameServerGameServer\Log\Login, combate, comércio, comandos, erros
ConnectServerConnectServer\Log\Conexões, seleção de servidor
DataServerDataServer\Log\Acesso ao banco, salvamentos
SQL Serverpasta LOG da instânciaErros do banco, deadlocks
Site/Painelpasta de logs do servidor webAcessos, cadastros, doações

Os caminhos exatos variam por provedor/versão do emulador. Documente os seus em um arquivo de referência; isso economiza tempo em toda manutenção futura.

Passo 2: Escolha a estratégia de rotação

Existem duas abordagens principais de rotação, e você pode combiná-las:

  1. Rotação por data: um arquivo novo por dia (por exemplo, GameServer-2025-01-31.log). Muitos emuladores já fazem isso nativamente. É a mais simples e segura, porque nunca mexe no arquivo que o processo está escrevendo.
  2. Rotação por tamanho: quando o arquivo atinge um limite (por exemplo, 100 MB), ele é fechado, renomeado e um novo começa. Útil para logs muito verbosos que crescem rápido dentro de um mesmo dia.

Para a maioria dos servidores, a rotação por data é o ponto de partida ideal. Se algum log específico cresce descontroladamente dentro do dia, adicione rotação por tamanho para ele.

> Verifique se o seu emulador já rotaciona por data. Se sim, seu trabalho vira apenas compactar e reter. Se não, os scripts abaixo cuidam disso.

Passo 3: Crie o script de rotação e compactação

O coração da automação é um script PowerShell que percorre a pasta de logs, compacta os arquivos antigos e apaga os que passaram do prazo. Salve algo como C:\MuServer\Scripts\RotacionarLogs.ps1:

# Configuração
$pastaLogs   = "C:\MuServer\GameServer\Log"
$diasParaZipar   = 1     # compacta logs com mais de 1 dia
$diasParaApagar  = 30    # apaga arquivos com mais de 30 dias

$agora = Get-Date

# 1) Compacta logs antigos ainda não compactados
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 "Compactado: $($_.Name)"
    }

# 2) Apaga arquivos compactados alem do prazo de retencao
Get-ChildItem -Path $pastaLogs -Filter *.zip |
    Where-Object { $_.LastWriteTime -lt $agora.AddDays(-$diasParaApagar) } |
    ForEach-Object {
        Remove-Item $_.FullName -Force
        Write-Output "Removido por retencao: $($_.Name)"
    }

Ajuste $diasParaZipar e $diasParaApagar conforme a política definida no próximo passo. Repita o bloco (ou parametrize o script) para cada pasta de log mapeada.

Passo 4: Defina a política de retenção por categoria

Nem todo log tem o mesmo valor. Tratar todos igual é um erro: ou você guarda lixo demais, ou apaga cedo demais aquilo que precisaria em uma investigação. Separe por categoria e defina retenções diferentes.

Categoria de logRetenção sugerida (exemplo)Justificativa
Segurança / anti-fraudeLonga (meses)Investigações surgem tarde
Transações valiosas (itens, doações)Longa (meses)Chargeback e disputas
Erros críticos do servidorMédia-longa (semanas a meses)Diagnóstico de bugs recorrentes
Login / conexõesMédia (semanas)Suporte e padrões de acesso
Depuração verbosaCurta (poucos dias)Volume alto, valor efêmero

Os prazos exatos variam por provedor/versão e pela sua capacidade de disco e obrigações legais. O princípio é constante: retenha mais tempo o que é caro de perder e descarte rápido o que é barato de recriar.

Passo 5: Agende a rotação com Tarefas Agendadas

Com o script pronto, agende-o para rodar automaticamente todo dia. Use o Agendador de Tarefas do Windows. Você pode criá-lo pela interface gráfica ou por linha de comando:

# Cria uma tarefa diaria as 05:00 para rotacionar 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 "Compacta e aplica retencao nos logs do MU"

Escolha um horário de baixa atividade (madrugada) para que a compactação e a exclusão não disputem I/O de disco com o pico de jogadores. Isso evita que a própria rotação vire causa de lag.

Passo 6: Trate o log do SQL Server à parte

O SQL Server tem seus próprios mecanismos e não deve ser gerenciado só com scripts de arquivo. Dois pontos merecem atenção:

  1. Log de erros do SQL Server (ERRORLOG): por padrão o SQL Server mantém alguns arquivos históricos e cicla no reinício. Você pode aumentar o número de arquivos retidos e forçar o ciclo periodicamente:
-- Forca a criacao de um novo arquivo de ERRORLOG
EXEC sp_cycle_errorlog;
  1. Log de transações do banco (.ldf): este NÃO é um log de texto para leitura; é parte do mecanismo do banco. Nunca apague o .ldf. Em vez disso, mantenha o modelo de recuperação adequado e faça backups do log de transações se estiver em modo FULL, para que ele não cresça indefinidamente. A configuração ideal varia por versão e pela sua estratégia de backup.

> Confundir o log de transações do SQL (.ldf) com um log de texto descartável e apagá-lo é um erro grave que pode corromper o banco. Trate o .ldf pela via de backups, nunca por exclusão manual.

Passo 7: Monitore o crescimento e valide a rotação

Configurar não basta; você precisa confirmar que a rotação está funcionando e que o disco não corre risco. Monte um monitoramento leve:

  1. Verifique periodicamente o espaço livre em disco da partição de logs.
  2. Confirme que os arquivos .zip estão sendo criados e os antigos removidos no prazo.
  3. Cheque os logs da própria Tarefa Agendada para garantir que ela roda sem erro.

Um script rápido para ver o tamanho ocupado por logs em cada pasta:

$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)
    }
}

Se uma pasta cresce muito mais rápido que as outras, revise o nível de verbosidade daquele componente. Muitas vezes dá para reduzir o log de depuração sem perder a informação que importa.

Erros comuns e soluções

ErroCausa provávelSolução
Disco enche e servidor caiSem rotação nem retençãoAutomatize compactação e exclusão por idade
Rotação causa lag no picoAgendada em horário movimentadoRode a rotação na madrugada
Perdeu prova de fraudeRetenção curta demaisDefina retenção longa para logs de segurança
Apagou o arquivo .ldf do SQLConfundir com log de textoNunca apague o .ldf; use backup de log de transações
Script falha silenciosamenteSem checagem da Tarefa AgendadaMonitore o histórico da tarefa e o espaço em disco
Compactação corrompe log ativoZipar arquivo aberto pelo processoCompacte só arquivos de dias anteriores
Todos os logs com mesma retençãoPolítica únicaSepare por categoria e retenha de forma diferente

Checklist de lançamento

  • Mapeei todos os locais de log (GameServer, ConnectServer, DataServer, SQL, site).
  • Escolhi a estratégia de rotação (por data e, se preciso, por tamanho).
  • Criei o script de rotação, compactação e exclusão por idade.
  • Defini uma política de retenção diferente por categoria de log.
  • Agendei a rotação para a madrugada via Tarefas Agendadas.
  • Configurei o ciclo do ERRORLOG do SQL Server à parte.
  • Confirmei que o log de transações (.ldf) é tratado por backup, não por exclusão.
  • Só compacto arquivos de dias anteriores, nunca o log ativo.
  • Montei monitoramento de espaço em disco e do histórico da tarefa.
  • Validei que arquivos antigos são compactados e removidos no prazo.

Logs bem gerenciados são invisíveis quando tudo vai bem e valiosíssimos quando algo dá errado. Ao rotacionar por data, compactar os antigos e reter cada categoria pelo tempo certo, você garante que o disco nunca vira gargalo e que, no dia da investigação, o rastro que você precisa ainda está lá. É uma daquelas configurações que dão pouco trabalho no começo e evitam muita dor de cabeça depois.

Perguntas frequentes

Por quanto tempo devo guardar os logs do servidor?

Depende do tipo de log. Logs de erro e de segurança/anti-fraude valem manter por mais tempo (semanas a meses) porque investigações surgem depois do fato. Logs de depuração verbosos podem ser descartados em poucos dias. O período ideal varia por provedor/versão e pela sua capacidade de disco, então balanceie utilidade contra espaço.

Rotação de log pode ser feita com o servidor no ar?

Sim, na maioria dos casos. Estratégias por data geram um arquivo novo por dia sem tocar no atual. Já mover um arquivo aberto pelo processo pode exigir cuidado, pois alguns emuladores mantêm o handle aberto. Quando houver dúvida, agende a rotação para o reinício diário ou teste em ambiente controlado.

Logs ocupam muito espaço mesmo?

Em servidores movimentados sim. Logs verbosos de GameServer e de banco podem crescer vários GB por dia. Sem rotação e compactação, isso enche o disco e derruba o servidor. Compactar arquivos antigos reduz o tamanho de forma drástica, tipicamente para uma fração do original, embora a taxa varie por conteúdo.

Preciso de ferramentas externas para rotacionar logs no Windows?

Nem sempre. Você pode combinar Tarefas Agendadas do Windows com scripts PowerShell ou batch para renomear, compactar e apagar logs por idade. Ferramentas dedicadas existem e ajudam em ambientes maiores, mas o essencial dá para montar com o que já vem no sistema.

O que nunca devo apagar dos logs?

Evite descartar cedo demais os logs de segurança, de transações importantes (itens valiosos, comércio, doações) e de erros críticos. Esses são os que você mais vai precisar em investigações de fraude, chargeback ou bug. Defina uma retenção maior para eles e trate os logs de depuração como descartáveis.

GA
Editor de guias e builds

Gabriel cobre gameplay, builds de classes, PvP e progressão. Testa cada estratégia em servidor antes de publicar.

Continue lendo

Artigos relacionados