2017-03-04 65 views
3

我正在开发一个使用Akka和Akka-http的简单服务器。未能从SLF4J加载类“org.slf4j.impl.StaticLoggerBinder”消息错误

我总是在标准输出以下错误消息,当我运行的应用程序到的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) 

任何人都可以知道为什么我总是得到错误声明吗?

回答

6

你需要提供一个SLF4J后端 - 阿卡docs推荐Logback。这可以通过将它添加到您的依赖关系来实现,如下所示。您可能也想将依赖项标记为Runtime,因为它不需要编译时。

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

请注意,这不是阿卡的具体要求:SLF4J只是一个门面,总是需要一个记录后端。

另请注意,如果您选择Logback,建议您提供一个带有日志设置的logback.xml文件,请参阅this answer以供参考。

所有你需要知道的关于在Akka内登录的是docs

+1

是的,它的工作原理!我不能相信我忘了!谢谢你的帮助! –

+1

这对我有用 - 摆脱了警告,但我得到了几个屏幕价值的调试和信息日志。上面的答案中的文档链接有助于,正如[本答案](https://stackoverflow.com/a/32003907)(基本上,添加'logback.xml'并根据​​需要进行配置)。 – fazy

相关问题