Я не могу настроить правильный Logger в типизированном актере.
Это строка журнала, которую я хочу достичь:
INFO 16:27:50 com.example.Registry /user/client-0(akka://NumberRegistry) - received input 1.
попробуй 1
Я использую slf4j, это текущий лучший установочный код, который мне удалось написать, но этого недостаточно.
private val logger = Logging(context.system.toUntyped, context.self.path.toStringWithoutAddress)
Вывод:
INFO 16:27:50 /user/client-0(akka://NumberRegistry) - received input 1.
Я не могу отфильтровать уровни аддитивности для этого с помощью slf4j, поэтому я не могу различить системные журналы и мои журналы. Вы не можете назвать подпуть в logback.xml
как
<logger name="com.example" level="DEBUG" additivity="false">
попробуй 2
Если вы передадите this.getClass
как logSource:
private val logger = Logging(context.system.toUntyped, this.getClass)
вы просто получите набор akka.actor.typed.internal.adapter.ActorSystemAdapter
в качестве имени логгера в логах.
попробуй 3
Я попытался создать пользовательский LogSource
, переопределив genString
и getClazz
:
object MyType {
implicit val logSource: LogSource[AnyRef] = new LogSource[AnyRef] {
def genString(o: AnyRef): String = o match {
case o: ActorRef[_] => o.path.path.toStringWithoutAddress
case _ => o.getClass.getName
}
override def getClazz(o: AnyRef): Class[_] = o match {
case _: ActorRef[_] => classOf[akka.event.DummyClassForStringSources]
case _ => o.getClass
}
}
но это не работает и тоже нехорошо.
Я прочитал всю документацию по ведению журнала , но в ней нет подробной информации, набранной в виде акки.
Как настроить регистратор, в котором правильно указаны имя класса и путь актера в типизированном актере?