Ser*_*lvo 10 log4j scala slf4j akka
我正在使用Akka和Akka-http开发一个简单的服务器.
当我在IntelliJ中运行应用程序时,我总是在stdout中收到以下错误消息:
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.
Run Code Online (Sandbox Code Playgroud)
我在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'
Run Code Online (Sandbox Code Playgroud)
我有app.conf,如下所示:
akka {
loggers = ["akka.event.slf4j.Slf4jLogger"]
loglevel = "INFO"
stdout-loglevel = "INFO"
logging-filter = "akka.event.slf4j.Slf4jLoggingFilter"
...
}
Run Code Online (Sandbox Code Playgroud)
最后,我正在使用这样的Logging:
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)
Run Code Online (Sandbox Code Playgroud)
任何人都可以知道为什么我总是得到错误陈述?
Ste*_*tti 19
您需要提供SLF4J后端 - Akka docs建议使用Logback.
这可以通过将其添加到您的依赖项来实现,如下所示.您可能还希望标记依赖项Runtime,因为它不需要编译时.
libraryDependencies += "ch.qos.logback" % "logback-classic" % "1.1.3" % Runtime
Run Code Online (Sandbox Code Playgroud)
请注意,这不是Akka的具体要求. SLF4J只是一个外观,总是需要一个日志记录后端.
另请注意,如果您选择Logback,建议您提供logback.xml包含日志记录设置的文件,请参阅此答案以获取参考.
有关在Akka内登录的所有信息,请参阅文档.