Inspectopedia
 
2024.3

Number of placeholders does not match number of arguments in logging call

Warning
Reliability
New
Last modified: 03 December 2024

Reports SLF4J, Log4j2 and akka.event.LoggingAdapter logging calls, such as logger.info("{}: {}", key) where the number of {} placeholders in the logger message doesn't match the number of other arguments to the logging call.

Use the inspection option to specify which implementation SLF4J uses. If Check automatically is chosen, then org.apache.logging.slf4j.Log4jLogger is searched in the classpath. If this file is founded or Yes is chosen, then cases, when the last parameter with an exception type has a placeholder, will not be reported for SLFJ4 API.

For example:

In this case 'new RuntimeException()' will be printed using 'toString()', (its stacktrace will not be printed):

Otherwise, it will be highlighted because the last placeholder is not used:

No option can be used to always highlight such cases when a placeholder is used for an exception even if org.apache.logging.slf4j.Log4jLogger is used as a backend. This option works only for SLF4J.