# Configurer un appender JMS

Vous pouvez envoyer des logs vers un système back-end ActiveMQ.

Talend Cloud supporte le protocole TCP ActiveMQ.

## Procédure

1. Ouvrez le fichier &lt;RemoteEngineInstallationDirectory&gt;/etc/org.ops4j.pax.logging.cfg et ajoutez les lignes suivantes :
   ### Exemple
   ```
   log4j2.appender.jms.type = Jms
   log4j2.appender.jms.name = JmsAppender
   log4j2.appender.jms.destinationBindingName= dynamicQueues/myQueueName1
   log4j2.appender.jms.factoryName=org.apache.activemq.jndi.ActiveMQInitialContextFactory
   log4j2.appender.jms.factoryBindingName=ConnectionFactory
   log4j2.appender.jms.providerURL=tcp://localhost:616162
   log4j2.appender.jms.userName=admin 
   log4j2.appender.jms.password=admin3
   log4j2.appender.jms.layout.type = JsonTemplateLayout
   log4j2.appender.jms.layout.eventTemplateUri=${karaf.base.uri}/etc/jsonLogMinTemplate.json
   log4j2.appender.jms.layout.stackTraceElementTemplateUri=${karaf.base.uri}/etc/StackTraceElementLayout.json

   log4j2.rootLogger.appenderRef.JmsAppender.ref = JmsAppender
   ```
2. Sauvegardez le fichier.
3. Ajoutez les informations MDC (Mapped Diagnostic Context) au fichier de modèle JSON pour que les logs de sortie contiennent les informations MDC, si applicable. Ces informations MDC comprennent l'ID d'exécution d'une tâche de Talend Management Console.
   1. Dans &lt;RemoteEngineInstallationDirectory&gt;/etc, créez un fichier et nommez-le jsonLogMinTemplateCustom.json.
   2. Ajoutez les lignes suivantes à ce nouveau fichier pour créer un résolveur MDC :
      ## Exemple
      ```
      {
         "logMessage": {
            "$resolver": "message", 
            "stringified": true
         },
         "my_mdc": { 
            "$resolver": "mdc" 
         },
         "logTimestamp": {
            "$resolver": "timestamp", 
            "epoch": {
               "unit": "millis", 
               "rounded": true
             }
         },
          "severity": {
             "$resolver": "level",
             "field": "name"
         },
          "ticLogLevel": {
             "$resolver": "source", 
             "field": "ticLogLevel"
         }
      }
      ```

      Cet exemple définit un objet JSON permettant de spécifier les champs à inclure dans la sortie MDC. Cet objet utilise des paires clé-valeur, dans lesquelles les clés représentent les champs de sortie et les valeurs permettent de spécifier les résolveurs pour alimenter ces champs.

      La ligne "my\_mdc": { "$resolver": "mdc" } crée un champ nommé my\_mdc dans la sortie. Le résolveur mdc alimente ce champ avec tous les champs MDC, fournissant des informations de diagnostic supplémentaires associées aux logs. Un champ my\_mdc se présente comme suit :
      ```
      { 
        "accountID":"31e47fe5-abcd-4a80-a8b2-590123456789",
        "bundle.id":"289",
        "bundle.name":"org.talend.ipaas.engine.deployment-agent",
        "bundle.version":"2.13.7",
        "executionDestination":"REMOTE_ENGINE",
        "flowExecutionId":"ed31c1a8-abcd-4121-98bd-cd0123456789",
        "flowID":"61fbfc899e86410123456789",
        "flowVersion":"45.28",
        "remoteEngineId":"c62cd9a1-abcd-4580-8af1-220123456789",
        "userId":"user.talend.com",
        "workspaceId":"5ef6605b2632fd1234567890"
      }
      ```

      Pour récupérer des champs MDC spécifiques, comme flowID (représentant un ID de tâche) et flowExecutionId (représentant un ID d'exécution de tâche), remplacez la ligne "my\_mdc": { "$resolver": "mdc" } par :
      ```
      "taskId": {"$resolver": "mdc", "key": "flowID"},
      "executionId": {"$resolver": "mdc", "key": "flowExecutionId"},
      ```

      Les noms des champs taskId et executionId ne sont que des exemples. Vous pouvez utiliser n'importe quel nom significatif pour les champs MDC à inclure dans la sortie.
4. Configurez votre système JMS pour qu'il utilise ce nouveau modèle jsonLogMinTemplateCustom.json au lieu de celui par défaut jsonLogMinTemplate.json.

[^1^](https://help.qlik.com/talend/fr-FR/remote-engine-user-guide-linux/Cloud/config-extra-jms-appender#fnsrc_1) Ceci est un exemple. destinationBindingName peut-être dynamicQueues/myQueueName ou dynamicTopics/myTopicName.

[^2^](https://help.qlik.com/talend/fr-FR/remote-engine-user-guide-linux/Cloud/config-extra-jms-appender#fnsrc_2) Ceci est un exemple. Vous devez définir votre hôte JMS et son port.

[^3^](https://help.qlik.com/talend/fr-FR/remote-engine-user-guide-linux/Cloud/config-extra-jms-appender#fnsrc_3) admin est un exemple pour les paramètres userName et password.