web-dev-qa-db-ja.com

SLF4Jからクラス "org.slf4j.impl.StaticLoggerBinder"メッセージエラーをロードできませんでした

AkkaとAkka-httpを使用してシンプルなサーバーを開発しています。

IntelliJにアプリケーションを実行すると、標準出力に次のエラーメッセージが常に表示されます。

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Build.gradleに次の依存関係があります。

compile 'org.scala-lang:scala-library:2.12.1'
compile 'com.typesafe.akka:akka-actor_2.12:2.4.17'
compile 'com.typesafe.akka:akka-stream_2.12:2.4.17'
compile 'com.typesafe.akka:akka-http_2.12:10.0.4'
compile 'com.typesafe.akka:akka-http-spray-json_2.12:10.0.4'
compile 'com.typesafe.akka:akka-slf4j_2.12:2.4.17'

そして、私は以下に示すようにapplication.confを持っています:

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

そして最後に、私はこのようにロギングを使用しています:

object HttpServer extends App with JsonSupport {
  override def main(args: Array[String]): Unit = {

  val config = ConfigFactory.load()

  implicit val system = ActorSystem(config.getString("application.actor-system"))
  implicit val materializer = ActorMaterializer()

  // needed for the future flatMap/onComplete in the end
  implicit val executionContext = system.dispatcher

  val logger = Logging(system, getClass)

なぜ私がいつもそのエラーステートメントを受け取るのか誰か知っていますか?

SLF4Jバックエンドを提供する必要があります-Akka docs Logbackを推奨します。

これは、以下のように依存関係に追加することで実現されます。コンパイル時に必要ないため、依存関係にRuntimeのフラグを設定することもできます。

libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.3" % Runtime

これはAkkaの特定の要件ではないことに注意してください。 SLF4J はファサードにすぎず、常にロギングバックエンドが必要です。

また、Logbackを選択した場合は、logback.xmlファイルにログ設定を提供することをお勧めします。参照については this answer を参照してください。

Akka内でのロギングについて知っておく必要があるのは docs だけです。

26
Stefano Bonetti