This is only for knowledge base, as we hit this issue in a JBoss instance internally.
Under some circumstances, the Async appender can block the execution thread of the caller, causing the application to reach a deadlock-like state.
This happens when the underlying appender experiences some problems and cannot "accept" any more logs. The Async, then, keeps those logs in a buffer, whose limit is 128 entries. In the default configuration, once this limit is reached, Async will not proceed without the buffer being cleared, not returning to the caller, effectively blocking the main thread.
This behaviour can be changed by setting the property "Blocking" to false, but that means that log messages can be lost, as the buffer won't accept any more messages (in fact, it'll accept, summarize and discard). The buffer can also be increased from the default 128 by setting the property BufferSize to a higher value.