web-dev-qa-db-ja.com

SLF4J:クラスパスには複数のSLF4Jバインディングが含まれます。コンソールに印刷されたメッセージ

コンソールでログを印刷し、ファイルに書き込みたい。 my scala akkaロガーを使用したプロジェクトは、ここにありますbuild.sbt

libraryDependencies ++= Seq("org.mongodb" %% "casbah" % "2.8.0",
                            "org.slf4j" % "slf4j-simple" % "1.7.12",
                            "org.elasticsearch" % "elasticsearch" % "1.5.0",
                            "org.scalatest" %% "scalatest" % "2.2.1" % "test"
                        withSources() withJavadoc(),
                        "org.easymock" % "easymock" % "3.1" withSources() withJavadoc(),
                        "org.mockito" % "mockito-all" % "1.9.5",
                        "com.typesafe.akka" %% "akka-actor" % "2.3.6",
                        "ch.qos.logback" % "logback-classic" % "1.0.9",
                        "com.typesafe.akka" %% "akka-slf4j" % "2.3.9")

ここに私のコードの一部があります

import akka.event.Logging

val log = Logging(context.system, this)
case RegularAdminWriteInMongo =>
    log.debug("writing to mongo")
    log.info("message received RegularAdminWriteInMongo")

メッセージを印刷した後、sbtでプログラムを実行すると

SLF4J:クラスパスには複数のSLF4Jバインディングが含まれます。 SLF4J:[jar:file:/ home/sara/.ivy2/cache/org.slf4j/slf4j-simple/jars/slf4j-simple-1.7.12.jar!/ org/slf4j/impl/StaticLoggerBinder.classにバインディングが見つかりました] SLF4J:[jar:file:/ home/sara/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.0.9.jar!/ org/slf4j/impl /にバインディングが見つかりましたStaticLoggerBinder.class] SLF4J:説明については、http://www.slf4j.org/codes.html#multiple_bindingsを参照してください。 SLF4J:実際のバインディングのタイプは[org.slf4j.impl.SimpleLoggerFactory] ​​[ArteciateActorSystem-akka.actorです。デフォルト-dispatcher-3] INFO akka.event.slf4j.Slf4jLogger-Slf4jLoggerが開始されました[ArteciateActorSystem-akka.actor。デフォルト-dispatcher-2] INFO models.AdminUserModels.AdminUserModelsActors.RegularAdminWriteMongoActor-受信したメッセージRegularAdminWriteInMongo

その後、他のprintlnステートメントが印刷されます。このメッセージの表示を停止する方法を教えてください。また、調査する前に尋ねられた質問を重複としてマークしないでください。問題を解決できません。

10
swaheed

このエラーメッセージには、知っておく必要があるすべての情報が既に表示されています。メッセージで提供されているリンク( http://www.slf4j.org/codes.html#multiple_binding )は次のように述べています:

SLF4J APIは、一度に1つだけの基礎となるロギングフレームワークとバインドするように設計されています。クラスパスに複数のバインディングが存在する場合、SLF4Jはそれらのバインディングの場所をリストした警告を発します。

クラスパスには、SLF4Jの2つのバインディングが含まれています。

/home/sara/.ivy2/cache/org.slf4j/slf4j-simple/jars/slf4j-simple-1.7.12.jar

そして

/home/sara/.ivy2/cache/ch.qos.logback/logback-classic/jars/logback-classic-1.0.9.jar

クラスパスにバインディングが1つしかないことを確認してください。これにより、警告が再度表示されなくなります。

要約すると:slf4j-simpleを依存関係から削除するには、logback-classicで十分です。

27
sheltem