Small Guide to SLF4j logging.

Reading Time: 3 minutes

Logging your application is an important aspect. It will help a programmer to see where an application is failing. This article will help you with how to log an application using SLF4j.


The Simple Logging Facade for Java (SLF4J) serves as a simple facade or abstraction for various logging frameworks, such as java.util.logging, logback, and log4j. SLF4J allows the end-user to plug in the desired logging framework at deployment time.

How to use SLF4j.


In order to use SLF4j, we require three dependencies to be added in the pom.xml file.

  • slf4j-api.jar
  • logback-core.jar
  • logback-classic.jar

How to add Logging?

We need to make the instance of the Logger retrieved by invoking the static getLogger method from the LoggerFactory class.

The syntax is given below:

Logger logger = LoggerFactory.getLogger("className");

The className is the name of the class in which logging is added. This className become the name of the logger.

Now using this instance, we can write the logging statement.

For example:

logger.debug("Hello world.");

In the above example debug method is used to log the information. There are various methods that can be used to log the information. Every method has it’s meaning and can be displayed according to the log level set in the logback.xml file.

Various methods of logging are :

  • trace()
  • debug()
  • info()
  • warn()
  • error()

Logback’s architecture

Logback is divided into three modules commonly known as logback-core, logback-classic, and logback-access. Logback is built upon three main classes i.e. Logger, Appender, and Layout. The Logger class is part of the logback-classic module. Appender and Layout interfaces are part of logback-core.

Configuration in logback

As mentioned in the official documentation, when logback configures itself and it follows the below steps.

  1. Logback tries to find a file called logback-test.xml in the classpath.
  2. If no such file is found, logback tries to find a file called logback.groovy in the classpath.
  3. If no such file is found, it checks for the file logback.xml in the classpath.
  4. If no such file is found, service-provider loading facility (introduced in JDK 1.6) is used to resolve the implementation of  com.qos.logback.classic.spi.Configurator interface by looking up the file META-INF\services\ch.qos.logback.classic.spi.Configurator in the classpath. Its contents should specify the fully qualified class name of the desired Configurator implementation.
  5. If none of the above succeeds, logback configures itself automatically using the BasicConfiguratorwhich will cause logging output to be directed to the console.

Appender Tag

Appender is a component that has the task to write the logging events. In appender tag, we have the encoder tag in which we specify the format of the logging message in pattern tag. There are two types of appender, console and file appender. Appender has two attribute name and class which specify whether it is a file appender or console appender. We will be using the encoder tag while defining the appenders as given below. It is basically, used to convert the log event into the byte array and writes the log on the outputStream.

Console Appender

As the name suggests it will append the log on the console.

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!– encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default –>
<pattern>%-4relative [%thread] %-5level %logger{35} – %msg %n</pattern>
<root level="DEBUG">
<appender-ref ref="STDOUT" />

view raw
console appender
hosted with ❤ by GitHub

The name attribute of appender is STDOUT that represents the appender is console appender. In the class attribute, we specify the class of the console appender.

File Appender

It will append the log in the file. If appender is file appender, then it has the file tag that has the path of the destination where logging file is stored.

<appender name="FILE" class="ch.qos.logback.core.FileAppender">
<!– encoders are assigned the type
ch.qos.logback.classic.encoder.PatternLayoutEncoder by default –>
<pattern>%-4relative [%thread] %-5level %logger{35} – %msg%n</pattern>
<root level="DEBUG">
<appender-ref ref="FILE" />

view raw
file appender
hosted with ❤ by GitHub

Official documentation of SL4J.


Written by 

Priyanka Thakur is a Software Consultant having 6 months of experience currently working at Knoldus Software LLP. She has done MCA at BVICAM, GGSIPU. She has a graduation degree in BCA from JIMS, GGSIPU. She is familiar with programming language' s such as C, Java, and Scala. She also has interest in Angular and Docker and currently working on Logam. She is dedicated, focused and hardworking person. Her interests are in to face new programming challenges because she believes these challenges produce opportunity. She is keen to learn new technologies. In her leisure time, she prefers reading about mythology, watching movies.