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

标签 scala akka logback

我正在使用Logback + SLF4J对具有akka.actor.ActorLogging特性的 Actor 进行日志记录。但是,当我执行代码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"])

最佳答案

Akka有单独的日志记录,在Akka的application.conf中进行配置。如果要桥接到SLF4J/Logback,请使用以下设置:

akka {
  loggers = ["akka.event.slf4j.Slf4jLogger"]
  loglevel = "DEBUG"
}

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

据我所知here,原因(Throwable)应该是log.error的第一个参数:
 def error(cause: Throwable, message: String)

这就是为什么您看到“警告参数剩余”的原因-您的Throwable参数只是被忽略了。

关于scala - akka.actor.ActorLogging不会通过logback记录异常的堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25968117/

相关文章:

java - 处理模板中的重复值

scala - 将列表转换为 map 并在一行中获取项目

scala - Spark 斯卡拉: Split each line between multiple RDDs

cassandra - Akka Persistence 和 Akka Persistence Query 有什么区别?

java - 无法让日志记录与嵌入式 Jetty 一起正常工作

java - Logback:有没有办法有条件地包含分组 token ?

scala - Seq 在 Scala 中实现快速随机访问和快速增长

scala - Akka log-dead-letters 和 log-dead-letters-during-shutdown 不起作用

java - Akka Java : create an actor with constructor taking parameters

java - Logback native VS 通过 SLF4J 的 Logback