Open In App

Disable SLF4J Logging in Apache Kafka

Last Updated : 17 Mar, 2024
Improve
Improve
Like Article
Like
Save
Share
Report

SLF4J means that Simple Logging Facade for Java serves as a logging facade, allowing applications to use various logging frameworks such as Log4j, and Logback without being tied to a specific implementation Kafka, being a distributed streaming platform, also on SLF4J for its logging and Log4j has the written for the purpose print the messages.

This allows applications to use different logging implementations such as Log4j, and Logback without being tied to a specific one. Kafka is a distributed streaming platform also on SLF4j for its logging.

In this article, we will discuss how to disable SLF4J Logging in Apache Kafka.

Disable SLF4J Logging

  • Reducing Noise: In production environments, excessive logging can clutter logs and make it harder to identify critical issues.
  • Performance Impact: Logging can impact performance when writing to disk or transmitting logs over the network.
  • Custom Logging: We may prefer to use a custom logging framework or none at all.

Approaches to Disable SLF4J Logging in Kafka:

  • Kafka brokers use Log4j for logging.
  • Set the log levels in the Kafka log4j.properties file.

Approach 1: Excluding slf4j-api dependency in Maven Dependency

Here it is the Example of the SLF4J – API dependency from the Kafka-clients Maven dependency.

<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>

And add the SLF4J- API dependency with the version we want to use.

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>

Here if we are using a logging framework that is built on top of SLF4J, such as Logback or Log4j we will also need to exclude the corresponding dependency from the Kafka-clients Maven dependency and add the version we want to use.

Here is the complete Maven Dependency for Disabling Kafka Logging:

<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>2.0.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>

In this, exclude the slf4j-api dependency from the kafka-clients Maven dependency and add the slf4j-log4j12 binding library in our classpath. This will ensure that SLF4J logs through Log4j and we will not see any logging from Apache Kafka.

Approach 2: log4j.properties file

By setting the below properties in log4j.properties file we can also disable SLF4J Logging in Apache Kafka.

# Set log levels 
log4j.rootLogger=ERROR, stdout

# Kafka logging
log4j.logger.org.apache.kafka=ERROR

# Redirect Kafka logging to stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n

# Disable SLF4J logging
log4j.logger.org.slf4j=OFF
log4j.logger.org.apache.kafka.common.utils.AppInfoParser=OFF

Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads