2017-10-02 3 views

Répondre

0

MDC vous permet d'ajouter du contexte aux messages que vous consignez. Par exemple, avec un motif d'enregistrement %5p %X{user-id} %m%n, l'insertion user-id sur la carte mdc remplacera la valeur dans le champ de modèle %X{user-id}

DiagnosticActorLogging vous offre un accès facile à mdc et prend soin de fixer et de compensation fg pour chaque message traité par l'acteur. Jetez un oeil à la méthode aroundReceive en DiagnosticActorLogging trait pour mieux le comprendre

override protected[akka] def aroundReceive(receive: Actor.Receive, msg: Any): Unit = try { 
    log.mdc(mdc(msg)) 
    super.aroundReceive(receive, msg) 
    } finally { 
    log.clearMDC() 
    } 
0

La meilleure façon de le comprendre est d'aller vérifier les sources de DiagnosticActorLogging:

/** 
* Scala API: Mix in DiagnosticActorLogging into your Actor to easily obtain a reference to a logger with MDC support, 
* which is available under the name "log". 
* In the example bellow "the one who knocks" will be available under the key "iam" for using it in the logback pattern. 
* 
* {{{ 
* class MyActor extends Actor with DiagnosticActorLogging { 
* 
* override def mdc(currentMessage: Any): MDC = { 
*  Map("iam", "the one who knocks") 
* } 
* 
* def receive = { 
*  case "pigdog" => log.info("We've got yet another pigdog on our hands") 
* } 
* } 
* }}} 
*/ 
trait DiagnosticActorLogging extends Actor { 
    import akka.event.Logging._ 
    val log = akka.event.Logging(this) 
    def mdc(currentMessage: Any): MDC = emptyMDC 

    override protected[akka] def aroundReceive(receive: Actor.Receive, msg: Any): Unit = try { 
    log.mdc(mdc(msg)) 
    super.aroundReceive(receive, msg) 
    } finally { 
    log.clearMDC() 
    } 
} 

Fondamentalement, il permet d'associer implicitement quelques morceaux partagés de données de journalisation à chaque appel de l'exploitation forestière dans l'acteur sans tous les échos de en les ajoutant explicitement. Selon votre application, cela peut être utile pour des choses comme le nom d'hôte, l'ID de demande, l'ID du client, la version jar, la date de construction, le point de terminaison, etc ...