← Назад к ресурсам

Async Logger

Asynchronous logging and efficient filtering - performance improvements and utility for keeping your logs clean

Modrinth optimization utility

Описание

**Async Logger** is a Minecraft mod that makes logging operations asynchronous. In vanilla, loggers are not asynchronous. This means the actual logging operations, including I/O operations, happen on the logging thread. This mod changes logging to be asynchronous for better performance. This can be especially useful when large amounts of messages are being logged and/or debug logging is enabled (default on Forge / NeoForge). ## Benchmarks | Item | Vanilla | AsyncLogger | |----------------------------------|-----------|-------------| | Simple Messages (10k) | 6146.1ms | 141.2ms | | Messages with Placeholders (10k) | 6413.2ms | 96.6ms | | Messages with Throwable (1.5k) | 19572.4ms | 9.0ms | You can do these tests yourself by enabling `testPerformance` in the config. When this option is enabled, the mod will log a large number of messages both before and after setting up async loggers. You can see the test results in the log. ## Filtering Starting from version 2.0.0, AsyncLogger supports log filtering. The filtering happens on the dedicated, async logger thread, ensuring there is no overhead for the caller. To use, simply set `filtering.enabled` to `true` in the config, and edit one or more of the filters. Filtering by logger name, level, and message (match substring or regexps) is supported. ## Technical Details - [Asynchronous loggers](https://logging.apache.org/log4j/2.x/manual/async.html) are used, in favor of Asynchronous appenders. The former is newer, faster and lighter on allocation rate. - Asynchronous loggers require LMAX Disruptor, a lock-free inter-thread communication library. The mod will load the library onto the system classloader when it is not present. This mod redistributes LMAX Disruptor under the Apache-2.0 [License](https://github.com/LMAX-Exchange/disruptor/blob/master/LICENCE.txt). - The config file allows easy control of some log4j2 settings. - `System.out` and `System.err` can be redirected to loggers.