Skip to main content


Showing posts from February 15, 2015

SL4J and parameterized messages

It's common to log messages that contain run-time information. In Java, this is easier if you use SL4J instead of log4j.

Here's a useful snippet from

This is how you would do in Log4j, but surely this is not fun and reduce readability of code by adding unnecessary boiler-plate code.

if (logger.isDebugEnabled()) {
    logger.debug("Processing trade with id: " + id + " symbol: " + symbol);

On the other hand if you use SLF4J, you can get same result in more concise format as shown below:

logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);

In SLF4J, we don't need String concatenation and don't incur cost of temporary not need String. Instead, we write log message in a template format with placeholder and supply actual value as parameters.