When adding to a Akka project I got the following error java.lang.ClassNotFoundException: akka.event.slf4j.Slf4jLogger
. I double checked my configuration and the Akka documentation. The documentation says the following:
Akka provides a logger for SL4FJ. This module is available in the ‘akka-slf4j.jar’. It has one single dependency; the slf4j-api jar. In runtime you also need a SLF4J backend, we recommend Logback.
No success.
After some Googling I found out that the akka-slf4j
library is required in addition to the logback-classic
library.
These dependencies need to be added to the build.sbt
configuration:
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.2" libraryDependencies += "com.typesafe.akka" %% "akka-slf4j" % "2.3.6"
This is the relevant part of the Akka configuration:
akka { loggers = ["akka.event.slf4j.Slf4jLogger"] loglevel = "DEBUG" logging-filter = "akka.event.slf4j.Slf4jLoggingFilter" ... }
To be complete, this is the logback.xml
configuration:
<configuration> <!-- Properties are set below, alternatively they can be set as system properties or passed as command line arguments --> <property name="LOG_HOME" value="logs" /> <property name="LOG_FILE_NAME" value="application.log" /> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%date{ISO8601} %-5level %logger{36} %X{sourceThread} - %msg%n </pattern> </encoder> </appender> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>${LOG_HOME}/${LOG_FILE_NAME}</file> <encoder> <pattern>%date{ISO8601} %-5level %-5level %logger{36} %X{sourceThread} - %msg%n</pattern> </encoder> </appender> <root level="DEBUG"> <appender-ref ref="STDOUT" /> <appender-ref ref="FILE" /> </root> </configuration>
Hope this helps someone.