【发布时间】:2016-12-14 10:46:32
【问题描述】:
我一直在尝试在我的 scalaTest 中记录内容:
class ChangeSetActorTest extends PersistenceSpec(ActorSystem("Persistent-test-System")) with PersistenceCleanup {
val log = Logging(system, this)
基本上我们只是说 ChangesetActorTest 继承自 TestKit(system)
很遗憾,Logging(system, this) 不适用于 this。
我收到以下错误:
[错误] /Users/maatary/Dev/IdeaProjects/PoolpartyConnector/src/test/scala/org/iadb/poolpartyconnector/changepropagation/ChangeSetActorTest.scala:22: 找不到 LogSource org.iadb.poolpartyconnector.changepropagation.ChangeSetActorTest 请参阅 ScalaDoc for LogSource 了解如何获取或构建一个。 [错误] val log = Logging(system, this)
我相信 Akka Logging Doc 这是以下几点: 在所有其他情况下,除非隐式 LogSource[T] 在相关类型的范围内,否则会发生编译错误。
换句话说,没有 LogSource[TestKit]
我想要一个最简单的解决方案来处理这个问题,并且需要最少的额外配置。到目前为止,我所做的是以下,一切都按预期工作:
class ChangeSetActorTest extends PersistenceSpec(ActorSystem("Persistent-test-System")) with PersistenceCleanup {
val log = system.log
从那里我只是去做一些事情
val received = chgtFetcher.receiveWhile((requestInterval + ProcessingLag).*(3)) {
case msg:FetchNewChangeSet => log.info(s"received: ${msg}" ) ; chgtFetcher.reply(NoAvailableChangeSet); msg
}
我的问题是,这是推荐的方法。到目前为止,来自我的演员的消息的顺序和来自测试的消息的顺序都井井有条。
推荐的统一登录方式是什么:
同时来自 Test 类(例如上面)和 Actor ?
如果使用一个系统,其中外部类也需要记录,我们需要一个统一的记录(异步)进行。
【问题讨论】: