akka.actor.ActorLogging不会通过logback记录异常的堆栈跟踪

Dza*_*nvu 8 scala logback akka

我正在使用Logback + SLF4J那些具有特征的演员来记录akka.actor.ActorLogging.但是,当我执行代码时log.error("Error occur!", e),异常的堆栈跟踪e不会被记录,而只会打印一行Error occur! WARNING arguments left: 1.我想知道为什么以及如何在日志文件中打印堆栈跟踪.谢谢.以下是我的logback.groovy文件配置.

appender("FILE", RollingFileAppender) {
  file = "./logs/logd.txt"
  append = true
  rollingPolicy(TimeBasedRollingPolicy) {
    fileNamePattern = "./logs/logd.%d{yyyy-MM-dd}.log"
    maxHistory = 30
  }
  encoder(PatternLayoutEncoder) {
    pattern = "%date{ISO8601} [%thread] %-5level %logger{36} %X{sourceThread} - %msg%n"
  }
}
root(DEBUG, ["FILE"])
Run Code Online (Sandbox Code Playgroud)

dk1*_*k14 16

Akka有单独的日志记录,它在Akka的application.conf中配置.如果你想桥接到SLF4J/Logback - 使用以下设置:

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
}
Run Code Online (Sandbox Code Playgroud)

见:http://doc.akka.io/docs/akka/2.0/scala/logging.html

至于我可以看到这里,原因(Throwable的)应该是第一个参数log.error:

 def error(cause: Throwable, message: String)
Run Code Online (Sandbox Code Playgroud)

这就是你看到"警告参数"的原因 - 你的Throwable参数被忽略了.

  • 这里同样的问题 - throwable应该是第一个参数,而不是最后一个. (2认同)