我无法在打字演员中设置适当的Logger。
这是我要实现的日志行:
INFO 16:27:50 com.example.Registry /user/client-0(akka://NumberRegistry) - received input 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">
如果您通过this.getClass
作为日志来源:
private val logger = Logging(context.system.toUntyped, this.getClass)
您只会在日志中得到一堆akka.actor.typed.internal.adapter.ActorSystemAdapter
作为记录器名称。
我尝试通过覆盖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
}
}
但是它不起作用,也不是很好。
我阅读了整个logging documentation,但没有详细介绍akka型。
如何设置在键入的actor中正确设置了类名和actor路径的记录器?
答案 0 :(得分:1)
如果您使用上下文记录器context.log
,您将在MDC中获得所需的所有信息:
{
timestamp=1557948214734,
level=INFO,
thread=dependency-system-akka.actor.default-dispatcher-4,
mdc={
sourceThread=dependency-system-akka.actor.default-dispatcher-3,
akkaSource=akka://dependency-system/user/pinger,
sourceActorSystem=dependency-system,
akkaTimestamp=19:23:34.731UTC
},
logger=akka.actor.typed.Behavior$,
message=ping,
context=default
}
要获得想要的图案,请使用以下内容:
<encoder>
<pattern>%-5level %d %logger{35} %mdc{akkaSource} - %msg%n</pattern>
</encoder>
将以上内容呈现为这样:
INFO 2019-05-15 12:28:59,012 akka.actor.typed.Behavior$ akka://dependency-system/user/pinger - ping
记录器默认为akka.actor.typed.Behavior$
仍然是唯一的问题。但是您可以在上下文中对其进行初始化:
object Pinger {
sealed trait Command
case object Ping extends Command
Behaviors.setup { context =>
context.setLoggerClass(this.getClass)
Behaviors.receiveMessage[Command] {
case Ping =>
context.log.info("ping")
Behaviors.same
}
}
}
导致
INFO 2019-05-15 12:52:52,911 x.x.actors.Pinger$ akka://dependency-system/user/pinger - ping