Akka没有显示日志输出

时间:2013-07-27 03:14:26

标签: scala logging akka

我在Scala 2.10.2和Akka 2.2上,并进行了以下测试

import org.junit._
import Assert._
import scala.util.{Failure, Success}
import net.liftweb.json._
import akka.actor.ActorSystem
import akka.event.Logging

class AppTest {
  implicit val system = ActorSystem("annotator-common")
  import system.dispatcher // execution context for futures below

  val log = Logging(system, getClass)

@Test
  def testHttp() = {
    import scala.concurrent.ExecutionContext

    val respBody = AsyncHttpProvider.getResponseBodyAsJValue("http://some-json-api-url")

    respBody onComplete {
      case Success(contents) => {
        val x = contents \\ "self"
        log.info(x.toString)
      }
      case Failure(error) => log.error(error.toString)
    }
    Thread.sleep(2000) //adding this allows the future to complete before the test
  }
}

AsynHttProvider.getResponseBodyAsJValue返回Future[JValue]。无论http调用失败还是成功,我都没有获得任何控制台输出。谁知道为什么?

修改 实际上我没有提到的是,如果我添加一个非基于未来的http API的调用,它将打印出两个调用的日志输出,所以我不认为这是日志设置。就此而言,我在println看到同样的问题。

我可以通过添加此功能来解决此问题,请参阅上面的更新代码

Thread.sleep(2000)

1 个答案:

答案 0 :(得分:3)

我的猜测:测试在未来执行之前终止。即你返回虚空,但不要等待将来完成。