我想在我的AKKA应用程序上实现logback MDC日志记录,以组织并拥有更具信息性的日志; 但是,我还读到MDC可能不适用于AKKA,因为AKKA具有异步日志记录系统(MDC可能存储在不同的线程上).我使用的自定义调度的定义MDC记录在这里希望能解决我的问题,但我不能让我的应用程序.我的应用程序不是一个游戏框架应用程序.
我有一个RequestHandler接收不同类型请求的RequestSpecificHandlerActor,并将其委托给将处理它的Actor.
class RequestHandler() extends Actor with akka.actor.ActorLogging {
def receive: Receive = {
//Requests
case req: RequestA =>
org.slf4j.MDC.put("messageId", req.msgId)
org.slf4j.MDC.put("requestType", req.requestType)
log.debug("FIRST LOG Received a RequestA")
val actorA = context.ActorOf(ActorA.props)
actorA ! req.msg
case req: RequestB => //...
//other requests...
//Response
case res: ResponseA =>
log.debug("Received responseA")
org.slf4j.MDC.remove("messageId")
org.slf4j.MDC.remove("requestType")
//other response
}
}
Run Code Online (Sandbox Code Playgroud)
在我的RequestSpecificHandler演员中,我也创建了新的或引用其他现有的HelperActors
class ActorA () extends Actor with akka.actor.ActorLogging {
val helperA = context.actorSelection("/user/helperA")
val …Run Code Online (Sandbox Code Playgroud)