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

Como Monitorar Logs do Servidor de MU Online em Tempo Real

Aprenda a monitorar logs do servidor MU Online em tempo real usando ferramentas nativas do Windows, scripts batch e consultas SQL para diagnosticar erros rapidamente.

EQ Equipe ViciadosMU · Atualizado em 3 jul 2026 · ⏱ 12 min de leitura

Manter o servidor de MU Online funcionando com estabilidade exige monitoramento constante. Sem visibilidade dos logs, qualquer crash, tentativa de exploit ou problema de desempenho pode passar despercebido por horas. Este tutorial cobre desde a leitura básica de arquivos de log até consultas SQL avançadas para acompanhar o servidor em tempo real.

Por Que Monitorar Logs é Essencial

O MuServer gera logs em duas camadas distintas: arquivos de texto no sistema de arquivos e registros no banco de dados SQL Server. Cada camada tem finalidade diferente:

  • Arquivos .log: eventos do processo em tempo de execução, erros de memória, falhas de carregamento de mapas
  • Tabelas SQL: histórico de ações de jogadores, transações de itens, conexões, logs de GM

Ignorar qualquer uma dessas camadas significa ter visibilidade parcial do que acontece no servidor.

Parte 1 — Estrutura de Logs do MuServer

1.1 Localização dos Arquivos de Log

A estrutura padrão do MuServer Season 6 organiza os logs assim:

MuServer/
├── GameServer/
│   └── Log/
│       ├── GameServer.log        ← eventos gerais do processo
│       ├── Error.log             ← erros críticos e exceptions
│       ├── ServerInfo.log        ← conexões e handshakes
│       └── GMCommand.log         ← comandos executados por GMs
├── ConnectServer/
│   └── Log/
│       ├── ConnectServer.log     ← tentativas de conexão ao CS
│       └── Error.log
├── DataServer/
│   └── Log/
│       └── DataServer.log        ← sincronização com banco de dados
└── EventServer/
    └── Log/
        └── EventServer.log       ← logs dos eventos (BC, DS, CC)
Nota: Em versões do MuServer para Season 9+, os logs do GameServer podem estar divididos por canal: GameServer01.log, GameServer02.log, etc., dentro de subpastas por servidor.

1.2 Verificando as Configurações de Log

Antes de monitorar, confirme que o log está habilitado. Abra GameServer/GameServer.ini e localize:

[Log]
LogSave=1
LogType=3
LogPath=./Log/
MaxLogFileSize=10240
  • LogSave=1 — habilita gravação em arquivo (0 desativa)
  • LogType=3 — nível de detalhe (1=erros, 2=avisos, 3=informações, 4=debug)
  • MaxLogFileSize=10240 — tamanho máximo em KB antes de rotacionar (10 MB)
Atenção: Usar LogType=4 em produção pode gerar arquivos de log com centenas de MB por dia, afetando o desempenho do disco. Use apenas para diagnóstico temporário.

Parte 2 — Monitoramento em Tempo Real com Ferramentas do Windows

2.1 PowerShell — Método Mais Rápido

O PowerShell nativo do Windows é suficiente para monitorar logs sem instalar nada:

Passo 1 — Abra o PowerShell como Administrador.

Passo 2 — Execute o comando para acompanhar o GameServer.log em tempo real:

Get-Content -Path "C:\MuServer\GameServer\Log\GameServer.log" -Wait -Tail 100

Passo 3 — Para filtrar apenas linhas com erros:

Get-Content -Path "C:\MuServer\GameServer\Log\GameServer.log" -Wait -Tail 100 |
  Where-Object { $_ -match "Error|FAIL|Critical|Exception" }

Passo 4 — Para monitorar múltiplos logs simultaneamente, crie um script monitor_logs.ps1:

$logs = @(
    "C:\MuServer\GameServer\Log\GameServer.log",
    "C:\MuServer\ConnectServer\Log\ConnectServer.log",
    "C:\MuServer\DataServer\Log\DataServer.log"
)

$jobs = foreach ($log in $logs) {
    Start-Job -ScriptBlock {
        param($path)
        Get-Content -Path $path -Wait -Tail 50
    } -ArgumentList $log
}

while ($true) {
    foreach ($job in $jobs) {
        Receive-Job -Job $job | ForEach-Object {
            Write-Host "[$(Split-Path $job.Name -Leaf)] $_" -ForegroundColor Cyan
        }
    }
    Start-Sleep -Milliseconds 500
}

2.2 Script Batch para Alertas de Erro

Crie C:\MuServer\Tools\alerta_erros.bat para verificar erros a cada minuto:

@echo off
:loop
findstr /I "Critical Error Exception FAIL" "C:\MuServer\GameServer\Log\Error.log" > "%TEMP%\erros_mu.txt"
for %%A in ("%TEMP%\erros_mu.txt") do if %%~zA GTR 0 (
    echo [%DATE% %TIME%] ERROS DETECTADOS - Verifique Error.log
    type "%TEMP%\erros_mu.txt"
)
timeout /t 60 /nobreak > nul
goto loop
Dica: Salve este script como tarefa agendada no Windows Task Scheduler para executar automaticamente ao iniciar o servidor. Configure-o para rodar com privilégios elevados.

Parte 3 — Monitoramento via SQL Server

3.1 Tabelas de Log Principais

O MuServer armazena registros de ações dos jogadores no banco MuOnline. As tabelas mais úteis para monitoramento são:

TabelaConteúdo
LOG_ConnectMemberConexões e desconexões de jogadores
LOG_DropItemItens dropados no chão
LOG_PickupItemItens coletados
LOG_TradeItemTrocas entre jogadores
LOG_WareHouseItemMovimentação no armazém
LOG_GMCommandComandos de GM executados

3.2 Consultas SQL para Monitoramento em Tempo Real

Conexões da última hora:

SELECT
    TOP 50
    sID        AS AccountID,
    sCharName  AS Character,
    sIP        AS IPAddress,
    sDate      AS DateTime,
    sType      AS Action  -- 0=login, 1=logout
FROM MuOnline..LOG_ConnectMember
WHERE sDate >= DATEADD(HOUR, -1, GETDATE())
ORDER BY sDate DESC;

Jogadores conectados agora:

SELECT
    a.memb_guid,
    a.memb___id AS Account,
    c.Name      AS Character,
    c.MapNumber AS Map,
    c.MapPosX,
    c.MapPosY,
    a.ConnectStat
FROM MuOnline..MEMB_INFO a
INNER JOIN MuOnline..Character c ON a.memb___id = c.AccountID
WHERE a.ConnectStat = 1
ORDER BY a.memb_guid;

Últimas transações de armazém suspeitas (grandes quantidades):

SELECT TOP 20
    sID        AS Account,
    sCharName  AS Character,
    sItemName  AS Item,
    sItemCount AS Quantity,
    sDate      AS DateTime
FROM MuOnline..LOG_WareHouseItem
WHERE sDate >= CAST(GETDATE() AS DATE)
  AND sItemCount > 50
ORDER BY sDate DESC;
Nota: Se as tabelas de log não existirem no seu banco, verifique se o arquivo GameServer/GameServer.ini tem SQLLog=1 e se os scripts de criação de tabelas foram executados durante a instalação do MuServer.

3.3 View para Dashboard de Monitoramento

Crie uma view SQL para consolidar informações do servidor:

USE MuOnline;
GO

CREATE VIEW vw_ServerStatus AS
SELECT
    (SELECT COUNT(*) FROM MEMB_INFO WHERE ConnectStat = 1)   AS PlayersOnline,
    (SELECT COUNT(*) FROM Character WHERE CtlCode > 0)        AS GMsOnline,
    (SELECT MAX(sDate) FROM LOG_ConnectMember)                 AS LastLoginTime,
    (SELECT COUNT(*) FROM LOG_ConnectMember
     WHERE sDate >= CAST(GETDATE() AS DATE) AND sType = 0)    AS LoginsToday,
    GETDATE()                                                  AS CheckedAt;
GO

-- Consulte a view a cada 30 segundos no SSMS:
SELECT * FROM vw_ServerStatus;

Parte 4 — Rotação e Limpeza de Logs

4.1 Script de Rotação Automática

Logs antigos consomem espaço em disco. Crie C:\MuServer\Tools\rotacionar_logs.bat:

@echo off
set LOG_DIR=C:\MuServer\GameServer\Log
set ARCHIVE_DIR=C:\MuServer\GameServer\Log\Archive
set DATE_TAG=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%

if not exist "%ARCHIVE_DIR%" mkdir "%ARCHIVE_DIR%"

:: Compactar logs com mais de 7 dias
forfiles /p "%LOG_DIR%" /m *.log /d -7 /c "cmd /c move @path %ARCHIVE_DIR%\@fname_%DATE_TAG%@ext"

echo [%DATE% %TIME%] Rotacao de logs concluida.

4.2 Limpeza de Logs SQL Antigos

-- Manter apenas os ultimos 30 dias de log de conexoes
DELETE FROM MuOnline..LOG_ConnectMember
WHERE sDate < DATEADD(DAY, -30, GETDATE());

-- Manter apenas os ultimos 15 dias de log de itens
DELETE FROM MuOnline..LOG_DropItem
WHERE sDate < DATEADD(DAY, -15, GETDATE());

DELETE FROM MuOnline..LOG_PickupItem
WHERE sDate < DATEADD(DAY, -15, GETDATE());

-- Verificar espaco recuperado
EXEC sp_spaceused 'LOG_ConnectMember';
Atenção: Faça backup das tabelas de log antes de executar DELETE em massa. Use SELECT INTO MuOnline..LOG_ConnectMember_backup SELECT * FROM MuOnline..LOG_ConnectMember WHERE sDate < DATEADD(DAY, -30, GETDATE()) antes da exclusao.

Resolucao de Problemas Comuns

Log parou de ser atualizado: O arquivo pode ter atingido o limite MaxLogFileSize. Renomeie o arquivo atual para GameServer_old.log e o servidor criara um novo automaticamente sem precisar reiniciar.

DataServer.log mostrando erros de timeout: Verifique a string de conexao em DataServer/DataServer.ini no parametro DBConnString. Erros de timeout frequentes indicam problema de rede entre o servidor de jogo e o SQL Server, ou indice fragmentado no banco. Execute DBCC INDEXDEFRAG(MuOnline) para desfragmentar.

ConnectServer.log com muitas reconexoes: Isso indica instabilidade de rede ou que o ServerList.dat do GameServer nao esta sincronizado com o IP real do ConnectServer. Confirme o parametro ServerAddr em ConnectServer/ConnectServer.ini.

Dica: Configure alertas por e-mail usando o SQL Server Agent para enviar notificacoes quando a contagem de jogadores cair abruptamente, o que pode indicar um crash do GameServer antes mesmo de voce verificar os logs manualmente.

Perguntas frequentes

Onde ficam os arquivos de log do GameServer?

Os logs do GameServer ficam em GameServer/Log/, com arquivos separados por categoria: GameServer.log (eventos gerais), Error.log (erros críticos) e ServerInfo.log (informações de conexão). Alguns builds do Season 6 também geram ConnectLog/ dentro dessa pasta.

Como monitorar múltiplos logs ao mesmo tempo no Windows?

Use o PowerShell com o comando Get-Content -Path 'GameServer/Log/GameServer.log' -Wait -Tail 50 em múltiplas janelas simultâneas, ou use a ferramenta gratuita mTail para abrir vários arquivos em abas separadas com atualização automática.

O log do GameServer não está sendo gerado, o que pode ser?

Verifique no arquivo GameServer/GameServer.ini se o parâmetro LogSave=1 está ativo. Em algumas versões do MuServer o log só é criado se a pasta GameServer/Log/ existir previamente — crie-a manualmente se necessário.

Como filtrar apenas erros de conexão de jogadores nos logs SQL?

Execute SELECT TOP 100 * FROM MuOnline..LOG_ConnectMember WHERE sDate >= CAST(GETDATE() AS DATE) ORDER BY sDate DESC no SQL Server Management Studio para ver as conexões do dia atual ordenadas por hora.

EQ

Equipe ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Continue lendo

Artigos relacionados