Hard dependency on scala-logging and logback-classic?

While trying out tapir-nima-server I realized that a couple modules depend on:

lazy val loggerDependencies = Seq(
  "ch.qos.logback" % "logback-classic" % "1.4.14",
  "com.typesafe.scala-logging" %% "scala-logging" % "3.9.5"


  • tapir-grpc-protobuf
  • tapir-jdkhttp-server
  • tapir-netty-server(-*)
  • tapir-nima-server
  • a bunch of test related modules (those are fine)

This is surprising as:

  • Logback (and other logging backends) should never come as a transitive dependency.
  • Scala-logging depends on SLF4J 1.7 which causes issues with SLF4J 2.0 compatible backends, such as Logback 1.4!

In my opinion:

  • Logback should be removed as a dependency outside test modules.
  • Scala-logging internal usage should be removed entirely for SLF4J (2.0 at this point).

I can open the PR, but I’m trying to figure out the context here, maybe I’m missing something. :slight_smile:

Yes you’re right, especially the server modules should depend only on a logging interface (slf4j is a good choice :slight_smile: ). PR would be great!

I created an issue [BUG] Hard dependency on scala-logging and logback · Issue #3464 · softwaremill/tapir · GitHub