Async Logger in FTB Skies 2: Aero

FTB Skies 2: Aero 1.13.0 ships version 2.2.2+1.21.1-neoforge · First seen in 1.0.3

Checked Sep 22, 2026FTB Skies 2: Aero 1.13.0Sources: FTB Skies 2: Aero 1.13.0 modlist.json · Modrinth

Report a mistake on this page

Async Logger is a mod in FTB Skies 2: Aero 1.13.0, where it is version 2.2.2+1.21.1-neoforge. Asynchronous logging and efficient filtering - performance improvements and utility for keeping your logs clean (Summary from the mod's Modrinth page.)

Async Logger guide for FTB Skies 2: Aero

Written for FTB Skies 2: Aero 1.10.0 · also fits 1.0.3 to 1.9.1 · updated Oct 8, 2026

Last verified for FTB Skies 2: Aero v1.10.0 on Oct 8, 2026 · text last changed Oct 8, 2026

This is the newest guide. It hasn't been checked against 1.13.0 yet.

Sections
5

Every recipe and number here was checked against FTB Skies 2: Aero 1.10.0, read from the running game on Sep 22, 2026.

What is Async Logger?

2 parts

Async Logger is a performance and utility mod that moves Minecraft's logging off the main logging path and onto its own thread. In vanilla, the actual logging work, including the I/O, happens on the logging thread. This mod makes it asynchronous instead.[1]

It matters most when a lot of messages are being logged, or when debug logging is on. That is the default on Forge and NeoForge, which is why a big modpack like this one benefits.[1]

What it does for you

  • Faster logging: the mod's own benchmark shows 10k simple messages taking 6146.1ms in vanilla and 141.2ms with Async Logger. Messages with a throwable (1.5k) go from 19572.4ms to 9.0ms.[1]
  • Log filtering: it can filter by logger name, level and message (substring or regular expression). Filtering runs on the async logger thread, so the code doing the logging pays no extra cost. You switch it on in the mod's config.[1]
  • Config control: the config file gives you easy control of some log4j2 settings, and System.out and System.err can be redirected to loggers.[1]
Tip: Want to see the speedup on your own machine? Turn on the testPerformance option in the config. The mod then logs a large batch of messages before and after setting up async loggers, and you can read the results in the log.[1]

In this pack

This pack ships Async Logger 2.2.2+1.21.1-neoforge. The mod has been in the pack since version 1.0.3 or earlier, so it is a long-standing part of the setup.[2]

It works entirely behind the scenes. It adds no items, blocks or recipes for you to craft, so there is nothing to unlock or progress through. It is worth knowing about mainly if you read your logs or help troubleshoot crashes.[1]

How do you get started with Async Logger?

2 parts

Async Logger is a logging mod, not an item mod, so there's nothing to craft or place to get started. It moves the actual logging work onto its own thread, which matters most when lots of messages are being logged or debug logging is on. Everything you do with it happens in its config.[1]

First steps, in order

  1. Open config/asynclogger.toml and check that enabled is true. That's how the pack ships it, and it's the switch for the whole mod.[3]
  2. Check filtering.enabled. It's true in the pack, so log filtering is on. Filtering runs on the dedicated async thread, so the code doing the logging pays no overhead for it.[1][3]
  3. Look at filtering.strings. The pack sets it to filter out messages containing "Start burner". The other filter lists (filtering.levels, filtering.loggers and filtering.regexes) are empty in the pack's main config.[3]
  4. Leave the log4j2 tuning options alone unless you know you need them. asyncQueueFullPolicy, discardThreshold, formatMsgAsync, synchronizeEnqueueWhenQueueFull and waitStrategy are empty, which means default. ringBufferSize is 0, which means the mod's own default.[3]

Adding your own filters

You can filter by logger name, by level, or by message, either as a substring or as a regex. Valid levels are TRACE, DEBUG, INFO, WARN, ERROR and FATAL.[1][3]

If you'd rather not edit the main file, the config says you can also put filters in files under config/asynclogger/. That way you can add your own comments and formatting. The pack's default.toml there has filtering.levels, filtering.loggers, filtering.regexes and filtering.strings all empty.[3][4]

Tip: filtering.sysout is true, so System.out counts as INFO and System.err as ERROR for filtering. wrapSysOutSysErr is false in the pack, and the config notes that filtering then happens on the calling thread.[3]
Watch out: Don't switch on testPerformance for normal play. It compares logging with and without the mod and prints a mass of messages at startup. It's false in the pack, and it's only worth enabling if you want to see the benchmark results in your log.[1][3]

How does Async Logger work?

4 parts

Async Logger has no machines, multiblocks or power to wire up. It works in the background on the game's log, so the mechanics here are about how log messages are handled and how the pack sets the mod up.[1]

How the logging works

In vanilla, loggers are not asynchronous, so the actual logging work, including I/O, happens on the logging thread. Async Logger moves that work off to a separate thread. It matters most when a lot of messages are logged or when debug logging is on, which is the default on Forge and NeoForge.[1]

Under the hood the mod uses asynchronous loggers rather than asynchronous appenders, because the former are newer, faster and lighter on allocation rate. They need the LMAX Disruptor library, and the mod loads it onto the system classloader if it isn't already present.[1]

The project page lists these benchmark results, vanilla versus Async Logger:[1]

  • Simple messages (10k): 6146.1ms vs 141.2ms.[1]
  • Messages with placeholders (10k): 6413.2ms vs 96.6ms.[1]
  • Messages with a throwable (1.5k): 19572.4ms vs 9.0ms.[1]

Filtering

Filtering removes unwanted messages from your logs. It is controlled by filtering.enabled, which is on in this pack. Filtering by logger name, level and message (substring or regex) is supported. Unless global filtering is on, it runs on the dedicated async thread, so the code that logged the message pays no extra cost.[1][3]

  • filtering.levels: levels to drop. Valid values are TRACE, DEBUG, INFO, WARN, ERROR and FATAL. The pack leaves it empty.[3]
  • filtering.loggers: drops messages from loggers with the given names. Empty in this pack.[3]
  • filtering.regexes: drops messages matching the given regexes. Empty in this pack.[3]
  • filtering.strings: drops messages containing the given substrings. The pack sets this to "Start burner", so any message containing that text is filtered out.[3]

You can also add filters in separate files under config/asynclogger, where you can add your own comments and formatting. The pack ships config/asynclogger/default.toml with filtering.levels, filtering.loggers, filtering.regexes and filtering.strings all empty.[3][4]

Global filtering and System.out

filtering.global is false in this pack. If you turn it on, filtering happens globally instead of at the logger stage. That can avoid creating the log event at all, but the filtering then runs on the caller thread and can't process placeholders properly.[3]

filtering.sysout is true, so filtering also applies to System.out (treated as INFO) and System.err (treated as ERROR). However, wrapSysOutSysErr is false in this pack, meaning those streams are not redirected to the logger. The config notes that in that case filtering happens on the caller thread.[3]

Other pack settings

enabled is true, so the mod is active. ringBufferSize is 0, which means the mod default is used (-1 would use the log4j2 default).[3]

Several options map straight onto log4j2 settings and are all left empty, which means their defaults apply: asyncQueueFullPolicy, discardThreshold, formatMsgAsync, synchronizeEnqueueWhenQueueFull and waitStrategy.[3]

Watch out: testPerformance is off in this pack. If you enable it, the mod compares logging with and without Async Logger and prints a mass of messages at startup.[1][3]
Watch out: noDebugLog is false here. It is Forge/NeoForge-only, and if you enable it, the mod stops writing debug.log and deletes any archived debug log matching the pattern debug-[1-5].log.gz.[3]

Which Async Logger config options matter?

3 parts

Async Logger works out of the box in this pack, and most of its options are left at their stock-looking values. Here are the ones you're most likely to care about, and how the pack sets them. All of them live in enabled's file, config/asynclogger.toml.[3]

The main switches

  • enabled is true, so the mod is turned on.[3]
  • noDebugLog is false. If you turn it on, the mod stops writing to debug.log, and any archived debug log matching the pattern debug-[1-5].log.gz gets deleted. This option only applies on Forge and NeoForge.[3]
  • wrapSysOutSysErr is false, so System.out and System.err are not redirected to the logger.[3]
  • testPerformance is false. Turning it on compares logging with and without Async Logger and logs the results, but it prints a mass amount of messages at startup, so only use it when you're curious.[1][3]

Log filtering

Filtering is on in this pack: filtering.enabled is true. filtering.global is false, so filtering happens on the dedicated async thread with no overhead for the caller. filtering.sysout is true, so System.out (treated as INFO) and System.err (treated as ERROR) are filtered too.[3]

The one filter the pack actually uses is filtering.strings, which is set to ["Start burner"]. Any message containing that text is filtered out and not logged. filtering.levels, filtering.loggers and filtering.regexes are all empty in the main file.[3]

Tip: If you want to add your own filters, the config also says you can put them in files under config/asynclogger/, where you can freely add comments and format them as you like. The pack's config/asynclogger/default.toml has empty lists for filtering.levels, filtering.loggers, filtering.regexes and filtering.strings. Valid level values are TRACE, DEBUG, INFO, WARN, ERROR and FATAL.[3][4]

Advanced log4j2 tuning

The remaining options pass values to log4j2 and are best left alone. asyncQueueFullPolicy, discardThreshold, formatMsgAsync, synchronizeEnqueueWhenQueueFull and waitStrategy are all empty strings, which means default behaviour. ringBufferSize is 0, which means use the mod's default.[3]

What changed in Async Logger between versions?

2 parts

FTB Skies 2: Aero 1.10.0 ships Async Logger 2.2.2+1.21.1-neoforge. The mod was already in the pack by version 1.0.3 or earlier, so it has been there since the early releases.[2]

I don't have any pack changelog entries that mention this mod. Below are the notable changes from the mod's own changelogs for the two versions I can see.[2]

2.2.2 (the version in this pack)

  • Fixed a game crash that happened when the filtering.sysout option was set to true.[5]
  • Added Ornithe support, independent of the Minecraft version. This doesn't affect you on NeoForge.[5]

2.1.2

  • The noDebugLog config now also cleans up archived debug logs.[6]
  • Fixed the log format sometimes looking different from how it does without the mod, for example a missing log name.[6]

Sources

  1. Async Logger project page (modrinth) · official mod data
  2. FTB Skies 2: Aero 1.10.0 mod list · pack file
  3. FTB Skies 2: Aero 1.10.0 config: config/asynclogger.toml · pack file
  4. FTB Skies 2: Aero 1.10.0 config: config/asynclogger/default.toml · pack file
  5. Async Logger 2.2.2+1.21.1-neoforge changelog · changelog
  6. Async Logger 2.1.2+1.21.1-neoforge changelog · changelog
Where this guide comes from

Written from what FTB Skies 2: Aero itself ships: its files and recipes, the in-game guidebooks and the mods' own pages. Every statement links to the source it came from, and the numbers are checked against the pack before publishing.

Guide last verified Oct 8, 2026.

Was this helpful?

Report wrong info

A few words are enough, up to 500 characters. Please do not include personal details.

Version in each release

21 releases, first in 1.0.3
FTB Skies 2: AeroVersionJarWhere it came from
1.13.0
Sep 28, 2026
2.2.2+1.21.1-neoforgeasynclogger-2.2.2+1.21.1-neoforge.jarFrom the published release
1.12.1
Sep 22, 2026
2.2.2+1.21.1-neoforgeasynclogger-2.2.2+1.21.1-neoforge.jarFrom the published release
1.12.0
Sep 21, 2026
2.2.2+1.21.1-neoforgeasynclogger-2.2.2+1.21.1-neoforge.jarFrom the published release
1.10.0
Sep 8, 2026
2.2.2+1.21.1-neoforgeasynclogger-2.2.2+1.21.1-neoforge.jarFrom the published release
1.9.1
Sep 2, 2026
2.2.2+1.21.1-neoforgeasynclogger-2.2.2+1.21.1-neoforge.jarFrom the published release
1.9.0
Sep 1, 2026
2.2.2+1.21.1-neoforgeasynclogger-2.2.2+1.21.1-neoforge.jarFrom the published release
1.8.0
Aug 25, 2026
2.2.2+1.21.1-neoforgeasynclogger-2.2.2+1.21.1-neoforge.jarFrom the published release
1.7.3
Aug 19, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.7.2
Aug 18, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.7.1
Aug 18, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.6.1
Aug 13, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.6.0
Aug 11, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.5.1
Aug 8, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.4.1
Aug 4, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.4.0
Aug 3, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.3.0
Jul 30, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.2.1
Jul 28, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.2.0
Jul 28, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.1.1
Jul 25, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.1.0
Jul 24, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release
1.0.3
Jul 17, 2026
2.1.2+1.21.1-neoforgeasynclogger-2.1.2+1.21.1-neoforge.jarFrom the published release

"From pack files" means the list came from the pack's own files; "from the published release" means ForgeBase read the jars of the release itself.

Items and blocks

We can't match this mod to the pack's item list: it registers as asynclogger, and the pack's recipe dump has nothing under that name. That means we found nothing, not that the mod adds nothing. Search the item browser

Config options (how FTB Skies 2: Aero sets them)

21 settings this pack ships for the mod. We don't have the mod's own defaults to compare them against yet.

See all 21 settings →

Show settings
SettingFTB Skies 2: Aero value
filtering.levels
config/asynclogger/default.toml
[]
filtering.loggers
config/asynclogger/default.toml
[]
filtering.regexes
config/asynclogger/default.toml
[]
filtering.strings
config/asynclogger/default.toml
[]
asyncQueueFullPolicy
Specifies the value for log4j2.asyncQueueFullPolicy (leave empty for default)
config/asynclogger.toml
discardThreshold
Specifies the value for log4j2.discardThreshold (leave empty for default)
config/asynclogger.toml

Comments and tips

Loading comments...