
Async Logger
Мод Async Logger для Майнкрафт делает логирование асинхронным, что повышает производительность и снижает задержки. Особенно полезен при большом количестве сообщений в логах или включенном дебаг-логировании.
Async Logger - это мод для Minecraft, который решает одну из тех незаметных, но важных проблем: синхронное логирование. В ванильной версии игры все операции записи в лог (включая I/O) выполняются на том же потоке, что и сам процесс. Это может создавать микро-лаги, особенно когда логов много - например, при включенном дебаг-логировании на Forge или NeoForge.
Мод делает логирование асинхронным. По сути, он просто переносит запись сообщений в отдельный поток, не блокируя основную работу игры. Разница в производительности - колоссальная, и это подтверждают тесты.
Тесты производительности
| Сценарий | Ванилла | AsyncLogger |
|---|---|---|
| Простые сообщения (10 000) | 6146.1ms | 141.2ms |
| Сообщения с плейсхолдерами (10 000) | 6413.2ms | 96.6ms |
| Сообщения с исключениями (1 500) | 19572.4ms | 9.0ms |
Цифры говорят сами за себя: ускорение в десятки и даже сотни раз. Если хочешь проверить сам - включи testPerformance в конфиге. Мод сам залогирует кучу сообщений до и после настройки асинхронных логгеров, результаты увидишь в логах.
Технические детали
- Используются асинхронные логгеры (asynchronous loggers), а не асинхронные аппендеры. Первые - новее, быстрее и меньше грузят память.
- Для работы асинхронных логгеров требуется LMAX Disruptor - библиотека для безлоковой межпоточной связи. Если её нет в системе, мод сам подгрузит её на системный класслоадер. Кстати, Async Logger распространяет LMAX Disruptor под лицензией Apache-2.0.
- Конфиг позволяет легко управлять некоторыми настройками log4j2.
- Можно перенаправить
System.outиSystem.errна логгеры.
Зачем это нужно в Майнкрафт
На первый взгляд может показаться, что это не влияет на геймплей. Но на практике, если у тебя стоит много модов или ты играешь на сервере с кучей плагинов - логи могут писаться постоянно. Особенно если включено дебаг-логирование (на Forge/NeoForge оно по умолчанию активно). Каждая запись в лог - это микро-задержка. В сумме они могут создавать ощутимые лаги, особенно на слабом железе или при большом онлайне.
Async Logger эту проблему решает полностью. Игра не ждет, пока лог допишется на диск - она просто отправляет сообщение в очередь и идет дальше. Для обычного игрока это может быть незаметно, но для сборщиков модов и администраторов серверов - реальный must-have.
Скачать Async Logger можно для Fabric, Forge и NeoForge под версии Minecraft 1.19-1.21. Мод легкий, конфликтов с другими модами обычно не вызывает. Главное - проверь конфиг после установки, чтобы убедиться, что тесты производительности отключены (они нужны только для проверки).
