-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
Closed
Labels
apiAffects the public APIAffects the public APIbugIncorrect, unexpected, or unintended behavior of existing codeIncorrect, unexpected, or unintended behavior of existing code
Milestone
Description
Description
Issue #2380 introduces generation of framework warning when last (implicit) parameter is a null Throwable.
Configuration
Version: 2.25.1
Operating system: Windows 11
JDK: Java HotSpot(TM) 64-Bit Server VM (build 25.461-b11, mixed mode)
Logs
2025-10-30T13:17:14,249 ERROR [main] MyTest {} - Execution completed with result invalid
java.lang.RuntimeException: failed
at ...
2025-10-30T11:17:14.252438500Z main WARN found 1 argument placeholders, but provided 2 for pattern `Execution completed with result {}`
2025-10-30T13:17:14,251 ERROR [main] MyTest {} - Execution completed with result valid
Reproduction
Some libraries provide execution results in an 'Either' style of structure (e.g. dev.failsafe.event.ExecutionCompletedEvent) --result or an exception. Such cases could conveniently be logged like
logger.error("Execution completed with result {}", outcome.result, outcome.failed);
That is, if we have failure Throwable -- log its stack trace. But if it is null and the error is described in .result -- just log what we have. This used to work properly until a fix for #2380 introduces a warning (WARN found 1 argument placeholders, but provided 2 for pattern), see sample test below and its output above.
record Result(
String result,
Throwable failed
) {}
@Test
void testLog4j() {
var logger = org.apache.logging.log4j.LogManager.getLogger(MyTest.class);
var failedResult = new Result("invalid", new RuntimeException("failed"));
logger.error("Execution completed with result {}", failedResult.result, failedResult.failed);
var validResult = new Result("valid", null);
logger.error("Execution completed with result {}", validResult.result, validResult.failed);
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
apiAffects the public APIAffects the public APIbugIncorrect, unexpected, or unintended behavior of existing codeIncorrect, unexpected, or unintended behavior of existing code
Type
Projects
Status
Done