Details
Description
If a call to logger.info() invokes the toString() method on one of its parameters, and that toString() method invokes another method which has another, nested logging call, then the output of the outer call is mangled.
This can be quite confusing as the nested logging may be conditional, or at DEBUG level, etc.
Problem appears to be related to ReusableParameterizedMessage.swapMessage() and the values in indices[]. (It looks inherently non-reentrant.)