Debugging

Debugging setups with the Alpakka Kafka Connector will be required at times. This page collects a few ideas to start out with in case the connector does not behave as you expected.

Logging with SLF4J

Akka, Akka Streams and thus the Alpakka Kafka Connector support SLF4J logging API by adding Akka’s SLF4J module and an SLF4J compatible logging framework, eg. Logback.

The Kafka client library used by the Alpakka Kafka connector uses SLF4J, as well.

Maven
<properties>
  <akka.version>2.5.30</akka.version>
  <scala.binary.version>2.13</scala.binary.version>
</properties>
<dependency>
  <groupId>com.typesafe.akka</groupId>
  <artifactId>akka-slf4j_${scala.binary.version}</artifactId>
  <version>${akka.version}</version>
</dependency>
<dependency>
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.2.3</version>
</dependency>
sbt
val AkkaVersion = "2.5.30"
libraryDependencies ++= Seq(
  "com.typesafe.akka" %% "akka-slf4j" % AkkaVersion,
  "ch.qos.logback" % "logback-classic" % "1.2.3"
)
Gradle
versions += [
  AkkaVersion: "2.5.30",
  ScalaBinary: "2.13"
]
dependencies {
  compile group: 'com.typesafe.akka', name: "akka-slf4j_${versions.ScalaBinary}", version: versions.AkkaVersion,
  compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'
}

To enable Akka SLF4J logging, configure Akka in application.conf as below. Refer to the Akka documentation for details.

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
  logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
}

Receive logging

In case you’re debugging the internals in the Kafka Consumer actor, you might want to enable receive logging to see all messages it receives. To lower the log message volume, change the Kafka poll interval to something larger, eg. 300 ms.

akka {
  actor {
    debug.receive = true
  }
  kafka.consumer {
    poll-interval = 300ms
  }
}
Found an error in this documentation? The source code for this page can be found here. Please feel free to edit and contribute a pull request.