Artemis: продвинутое логирование и blamefile для Minecraft

Что такое мод Artemis для Minecraft? Логирование в Minecraft — тема, которая редко волнует обычных игроков, но становится критически важной для администраторов серверов и разработчиков модов. Стандартные потоки вывода и ошибок Java не всегда удобно читать, а найти источник проблемы среди тысяч ст...

Скачать Artemis для Minecraft 1.8, 1.7.2, 1.6.4

Оригинальное название: Artemis

Версии Minecraft: 1.6.4, 1.7.2, 1.8

Загрузчик: Forge

ФайлВерсияЗагрузчикРазмер
Artemis-1.6.4-0.1.2-6cda7f0-12.jar1.6.4Forge37 КБСкачать
Artemis-1.7.2-0.3.1-71f6753-17.jar1.7.2Forge49 КБСкачать
Artemis-1.8-0.4.0-f4f6b30-20.jar1.8Forge49 КБСкачать
Artemis-1.8-0.5.0-5d03638-21.jar1.8Forge55 КБСкачать

Что такое мод Artemis для Minecraft?

Логирование в Minecraft — тема, которая редко волнует обычных игроков, но становится критически важной для администраторов серверов и разработчиков модов. Стандартные потоки вывода и ошибок Java не всегда удобно читать, а найти источник проблемы среди тысяч строк бывает непросто. Мод Artemis решает эти задачи, перенаправляя потоки Standard Out и Standard Error в продвинутую систему Log4j2 и добавляя уникальную возможность создания «blamefile» — файла, который указывает на классы и строки, сгенерировавшие больше всего записей в логе.

Artemis был задуман как инструмент для глубокой диагностики. В отличие от встроенных средств Forge, которые после слияния базовой функциональности предлагают лишь упрощённый вариант без многострочной печати стек-трейсов, игнорирования внутренних классов и генерации blamefile, этот мод берёт управление стандартными потоками на себя во время стадии preinit. Правда, есть нюанс: до preinit, например при инициализации coremods, перенаправлением занимается сам FML — это ограничение связано с тем, что Artemis загружается как обычный мод.

Основные возможности Artemis

Главная фишка мода — генерация blamefile при завершении работы игры или сервера. Этот файл содержит список «провинившихся» классов с указанием конкретных строк и количеством записей, которые они создали за последнюю сессию. Представьте: сервер падает, а вы получаете чёткий отчёт, кто именно замусорил лог. Разработчикам модов это помогает быстро находить утечки логирования, а администраторам — выявлять проблемные сборки.

Дополнительно Artemis умеет:

  • Настраивать глубину стек-трейса — сколько строк показывать для каждой записи (по умолчанию 1).
  • Игнорировать внутренние классы Java и библиотек, используя регулярные выражения (по умолчанию фильтруются пакеты вроде paulscode, java.lang, com.intellij, sun).
  • Подменять имена классов на идентификаторы модов — удобно, если вы хотите видеть, какой мод стал источником сообщения, а не полное имя класса.

Установка и совместимость

Установка проста до безобразия: скачанный jar-файл нужно поместить в папку mods вашего клиента или сервера. Никаких зависимостей, кроме самого Forge, не требуется. Мод работает одинаково хорошо на обеих сторонах, что делает его универсальным помощником. Кстати, если вы предпочитаете не возиться с ручным копированием файлов, лаунчер foxygame.net позволяет скачивать Artemis прямо из меню — это современный и гибкий инструмент, который автоматически размещает мод в нужной директории и следит за совместимостью версий.

Конфигурация Artemis.cfg

После первого запуска в папке config появится файл Artemis.cfg, где можно тонко настроить поведение мода. Все параметры разделены на логические секции:

  • Blame — включает создание blamefile при выходе (по умолчанию выключено, так как используется JVM shutdown hook).
  • Logging — управляет игнорированием встроенных классов и глубиной стек-трейса. Параметр ignoreBuiltins (false по умолчанию) позволяет отсечь шум от внутренних библиотек.
  • Builtins — здесь можно задать собственное регулярное выражение для определения «внутренних» классов. Если useCustomRegex установлен в true, будет использоваться ваш паттерн вместо стандартного.
  • IdMap — при включении заменяет имена классов на ID модов в обычных логах, но не влияет на формат blamefile.

Например, чтобы получить blamefile, достаточно выставить createBlamefile=true. Глубину стек-трейса можно увеличить до 3–5, если вам нужен более детальный контекст ошибок. А собственный regex пригодится, когда вы хотите исключить из логов специфические пакеты вашего модпака.

Как работает JVM Shutdown Hook

Механизм создания blamefile на сервере заслуживает отдельного внимания. Поскольку Forge не предоставляет подходящих событий для выполнения кода строго перед завершением JVM, Artemis внедряет так называемый «JVM shutdown hook» на стадии preinit. Это гарантирует, что задача по формированию blamefile выполнится самой последней, даже если моды продолжают писать в лог во время выключения. Именно поэтому функция отключена по умолчанию — хук срабатывает только при нормальном завершении процесса, а не при краше, и требует аккуратного использования.

Благодаря такому подходу администраторы могут получать сводку по итогам работы сервера, не опасаясь, что часть данных потеряется. Это особенно ценно при длительной работе без перезагрузок, когда накопившиеся ошибки могут указать на медленную деградацию производительности.

Заключение

Artemis — это не просто мод, а настоящий диагностический инструмент для тех, кто серьёзно относится к стабильности серверов Minecraft. Он превращает хаотичные потоки логов в структурированную картину, помогает быстро находить проблемные моды и сокращает время расследования инцидентов. Наличие гибкой конфигурации и уникального blamefile делает его незаменимым в арсенале разработчиков и администраторов. А благодаря простой установке и совместимости с любыми сборками Forge, начать использовать его можно за пару минут — достаточно положить jar в папку mods или воспользоваться удобным лаунчером вроде foxygame.net, который автоматизирует процесс.

Исходный код доступен на GitHub (репозиторий Emberwalker/Artemis), сборки — на Jenkins (Artemis on Hydria), а живое обсуждение ведётся в IRC-канале #drakon на EsperNet. Попробуйте Artemis в своей сборке, и вы удивитесь, насколько прозрачнее станут ваши логи.