我一直在尝试将我的scalaTest日志记录如下:
class ChangeSetActorTest extends PersistenceSpec(ActorSystem("Persistent-test-System")) with PersistenceCleanup {
val log = Logging(system, this)
基本上,我们可以说ChangesetActorTest继承自TestKit(system)。
不幸的是,Logging(system, this)与this不兼容。
我得到了以下错误:
[error] /Users/maatary/Dev/IdeaProjects/PoolpartyConnector/src/test/scala/org/iadb/poolpartyconnector/changepropagation/ChangeSetActorTest.scala:22: Cannot find LogSource for org.iadb.poolpartyconnector.changepropagation.ChangeSetActorTest please see ScalaDoc for LogSource for how to obtain or construct one. [error] 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
}
我的问题是,这是否是推荐的方法。到目前为止,来自我的actor和测试的消息顺序已经很好地排序了。
在统一的方式下记录登录的建议方法是什么:
同时从测试类(例如上面)和Actor中进行记录?
如果使用需要外部类进行记录的系统,并且我们需要进行统一的日志记录(异步)。