MAATRIX GAMES / Блог / Логи и краш-репорты: как читать и искать причину

Логи и краш-репорты: как читать и искать причину

MAATRIX GAMES

Сервер лёг посреди вайпа, игроки пишут в дискорд «всё упало», а вы смотрите на пустой чёрный экран консоли и не понимаете, с чего начать. Хорошая новость: почти всегда причина крашка написана открытым текстом — просто не в том месте, куда вы обычно смотрите. В этой статье — рабочая методика: где лежат логи у большинства игровых серверов, что искать в первую очередь, чем краш-репорт отличается от обычного лога и как по типичным фразам в тексте ошибки понять, с чем вы имеете дело — не гадая и не переустанавливая сервер с нуля на всякий случай.

Где лежат логи: карта путей для разных типов серверов

Общий паттерн для подавляющего большинства игр — папка logs/ рядом с исполняемым файлом сервера. Дальше начинаются нюансы по движкам:

  • Minecraft (Java, ваниль/Forge/Fabric/Paper) — logs/latest.log в корне сервера, старые сессии архивируются в logs/2026-08-28-1.log.gz. Отдельно crash-reports/ для настоящих крашей JVM.
  • Source-движок (CS2, TF2, Left 4 Dead 2, Garry's Mod) — консоль сервера обычно ничего не пишет в файл по умолчанию, нужно включить логирование командой log on и sv_logfile 1, тогда файлы появятся в logs/L<дата>.log.
  • ARK: Survival, ARK: Survival Ascended — ShooterGame/Saved/Logs/ShooterGame.log, там же лежат логи RCON-команд, если включён RCONEnabled.
  • Project Zomboid — папка Zomboid/Logs/ (в профиле пользователя или рядом с сервером, зависит от ОС), внутри сразу несколько типов: *_DebugLog-server.txt, *_cmd.txt, *_chat.txt — краш чаще всего виден именно в DebugLog.
  • 7 Days to Die — как Unity-игра, пишет output_log__<timestamp>__.txt в папке 7DaysToDieServer_Data, плюс отдельные Unity crash-дампы при настоящем падении процесса.
  • Rust — вывод идёт в консоль (stdout), поэтому если сервер запущен через screen или tmux, лог живёт только в буфере сессии — стоит сразу настроить перенаправление в файл (./RustDedicated ... > server.log 2>&1). Отдельно логи плагинов Oxide/uMod — в oxide/logs/.
  • Valheim — тоже пишет в stdout, встроенного файла лога нет. На Linux удобнее всего смотреть через journalctl -u valheim -f, если сервер запущен как systemd-юнит, либо через nohup ./valheim_server.x86_64 ... > valheim.log 2>&1 &.

Если не уверены, где искать конкретно для вашей игры — откройте гайд по запуску нужного сервера в блоге: в разделе про автозапуск там обычно указан и путь к логам.

Первый диагностический проход: что смотреть в первую очередь

Не читайте лог с начала — там сотни строк штатной загрузки чанков, коннектов игроков и системных сообщений, которые не имеют отношения к делу. Правильный порядок:

  1. Откройте файл и сразу прыгайте в конец (tail -n 200 logs/latest.log в консоли или Ctrl+End в текстовом редакторе).
  2. Ищите последние 30-50 строк перед моментом остановки — именно там обычно лежит причина, а не в начале файла.
  3. Прогоните файл через grep по ключевым словам:
grep -iE "exception|error|fatal|crash|out of memory|corrupt" logs/latest.log
  1. Обратите внимание на самую первую ошибку в цепочке, а не на последнюю. Часто одна первопричина порождает каскад из десятка вторичных исключений — чинить нужно именно первую.
  2. Зафиксируйте точное время краша (метка в логе) и сверьте с системными логами хоста — если сервер упал одновременно с рестартом контейнера или OOM-killer'ом ОС, дело вообще не в игре.

Отдельно полезно смотреть разницу между рабочим и крашнутым логом, если он есть — например, сравнить последний нормальный старт и тот, что упал:

diff logs/2026-08-27-1.log logs/latest.log | less

Нужен игровой сервер?

MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.

Создать сервер

Краш-репорты: чем они отличаются от обычного лога

Некоторые игры при настоящем падении процесса (а не просто ошибке в консоли) создают отдельный файл — краш-репорт. Это не то же самое, что обычный лог: в нём обычно есть стектрейс на уровне движка, версия игры, список загруженных модов/плагинов на момент падения и иногда состояние памяти.

У Minecraft это crash-reports/crash-2026-08-29_14.32.05-server.txt — в шапке файла сразу видно версию Minecraft, версию Forge/Fabric Loader и полный стек вызовов. Ищите там строку Caused by: — это и есть корень проблемы, а не первая строка исключения (она обычно просто «что-то пошло не так на уровне выше»).

У Unity-игр (7 Days to Die, Valheim при использовании BepInEx) краш-дампы обычно попадают в системную папку логов Unity — на Linux это, как правило, ~/.config/unity3d/<Studio>/<Game>/, на Windows — %USERPROFILE%\AppData\LocalLow\<Studio>\<Game>\. Точный путь зависит от игры и версии Unity, поэтому если не нашли с первого раза — поищите файлы Player.log или output_log*.txt рядом.

Главное правило: если есть отдельный краш-репорт — читайте сначала его, а не обычный лог. В обычном логе часто просто обрывается вывод («сервер завис/умер»), а причина видна только в стектрейсе краш-репорта.

Нехватка памяти в логах: как это выглядит

OOM (out of memory) — одна из самых частых причин падений, особенно на модовых сборках Minecraft и серверах с большим количеством плагинов. В логах она проявляется по-разному:

  • Java: java.lang.OutOfMemoryError: Java heap space или GC overhead limit exceeded — сборщик мусора тратит почти всё время на попытки освободить память, вместо реальной работы.
  • Общесистемный OOM-killer Linux убивает процесс молча — в логе игры вы увидите просто резкий обрыв без финальной ошибки, а причину нужно смотреть в dmesg | grep -i oom или journalctl -k | grep -i "out of memory".
  • Unity/Source: чаще похоже на Fatal error: Allocation failed или bad_alloc — сигнал, что процессу не хватило оперативной памяти под текущую нагрузку (число игроков, размер карты, кэш чанков).

Практический вывод: если OOM повторяется регулярно, а не разово — это почти всегда не баг, а нехватка выделенной серверу RAM под конкретную сборку. Стоит свериться с рекомендуемым объёмом для игры (для тяжёлых модпаков Minecraft это часто 6-8 ГБ, а не стандартные 2 ГБ под ваниль) и, если нужно, оптимизировать TPS и настройки самих модов, прежде чем просто накидывать память — иногда проблема не в объёме, а в утечке конкретного мода.

Конфликты модов и плагинов: как вычислить виновника

Это самая частая причина краша на модовых/плагинных сборках, и лог обычно прямо называет виновника — просто нужно уметь читать стектрейс правильно:

  1. В стектреке Java ищите имя пакета мода/плагина — оно почти всегда видно в пути класса, например at com.someauthor.modname.EventHandler.onTick. Это и есть подозреваемый.
  2. Если в стеке фигурируют сразу несколько модов — проблема, скорее всего, на стыке (оба меняют одну и ту же механику, например хук на генерацию мира или на инвентарь).
  3. Для плагинных серверов (Paper, Oxide/uMod, ESX/QBCore для FiveM) — включайте логирование по плагинам отдельно, если фреймворк это поддерживает: у Oxide это oxide/logs/<plugin>/, у Paper — таймингс через /timings report.
  4. Метод исключения одного мода/плагина за раз всё ещё надёжнее всего, если стектрейс неоднозначный: отключаете половину списка, воспроизводите краш, делите пополам оставшихся — классический бинарный поиск виновника, минут 15-20 на сборку из 40-50 модов.
  5. Проверьте версии — конфликт часто вылезает не из-за самих модов, а из-за несовпадения версий загрузчика (Forge/Fabric) и требуемой версии API у конкретного мода. Это отдельно видно в шапке краш-репорта.

Если работаете с Rust-плагинами на Oxide/uMod, полезно сразу настроить логирование самих плагинов при установке — тогда при следующем краше не придётся включать его в панике посреди вайпа.

Повреждённые сохранения и сетевые ошибки

Два других частых виновника, которые тоже узнаются по характерным фразам в логе:

Повреждённый файл сохранения — обычно это NBTException, Corrupted world, Failed to load chunk, Unexpected end of file или похожие сообщения при чтении файла мира/базы. Часто возникает после жёсткого выключения питания хоста, killed-процесса без штатного сохранения или переполненного диска в момент записи. Первая помощь — проверить свободное место (df -h), затем попробовать откатиться на предыдущий бэкап, если он есть, вместо попыток руками чинить бинарный файл сохранения.

Сетевые ошибки — Connection reset by peer, Socket timeout, EADDRINUSE (порт уже занят другим процессом), Failed to bind to port. Последнее особенно частое — обычно значит, что предыдущий процесс сервера не завершился штатно и всё ещё держит порт. Проверяется командой lsof -i :<порт> или netstat -tulnp | grep <порт> на Linux.

Отдельная категория — обрывы у игроков (не у сервера): если в логе массово появляются disconnect: timed out в моменты пиковой нагрузки, это чаще говорит о нехватке тикрейта/CPU на сервере, а не о проблемах с сетью у игроков — сервер просто не успевает отвечать на keep-alive пакеты.

Нужен игровой сервер?

MAATRIX GAMES — 45+ игр, деплой за минуты, DDoS-защита, автобэкапы. Тарифы от 399 ₽/мес.

Создать сервер

Частые вопросы

Лог пустой или обрывается без единой ошибки — что делать?

Скорее всего процесс убит извне (OOM-killer ОС, ручной kill -9, рестарт контейнера хостингом). Смотрите системные логи хоста (dmesg, journalctl), а не только лог игры — там причины может не быть вовсе.

Краш-репорт создался, но в нём нет Caused by:?

Такое бывает при повреждении самого файла отчёта (диск переполнился во время записи) или при некоторых нативных крашах вне JVM/движка. В этом случае ищите отдельный dump-файл рядом — операционная система (Windows Event Viewer, Linux coredumpctl) иногда пишет свой независимый отчёт.

Как понять, баг ли это в конкретной версии игры, а не в моей настройке?

Поищите точный текст ошибки (без своих путей и никнеймов) на официальном багтрекере игры или форуме моддинг-сообщества — если багу несколько недель и разработчики уже в курсе, чинить локально смысла нет, проще подождать патча или откатиться на предыдущую стабильную версию.

Нужно ли чистить старые логи?

Да, периодически — они занимают место и иногда сами становятся причиной проблем (переполнение диска). Но не удаляйте лог с крашем, пока не разобрались в причине или не обратились в поддержку.

Сколько логов хранить, если сервер стабильно работает?

Достаточно ротации на 7-14 дней штатными средствами (Minecraft делает это сам, для остальных настраивается через logrotate на Linux) — этого хватает, чтобы восстановить картину, если проблема проявится не сразу.