# JMSアペンダーを設定

ActiveMQのバックエンドシステムにログを送りたい場合があります。

Talend CloudはActiveMQ TCPプロトコルをサポートしています。

## 手順

1. &lt;RemoteEngineInstallationDirectory&gt;/etc/org.ops4j.pax.logging.cfgファイルを開き、次の行を追加します。
   ### 例
   ```
   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. ファイルを保存します。
3. Mapped Diagnostic Context (MDC)情報をJSONテンプレートファイルに追加し、必要に応じて出力ログにMDC情報が含まれるようにします。このMDC情報にはTalend Management Consoleタスクの実行IDが含まれています。
   1. &lt;RemoteEngineInstallationDirectory&gt;/etcで、ファイルを作成してjsonLogMinTemplateCustom.jsonという名前を付けます。
   2. 新しいこのファイルに次の行を追加し、MDCリゾルバーを作成します。
      ## 例
      ```
      {
         "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"
         }
      }
      ```

      この例では、MDC出力に含めるフィールドを指定するJSONオブジェクトを定義します。このオブジェクトはキー - 値ペアを使用します。キーは出力フィールドを表し、値はそのフィールドに入力するリゾルバーを指定します。

      "my\_mdc": { "$resolver": "mdc" }行は、出力にmy\_mdcというフィールドを作成します。mdcリゾルバーはこのフィールドに MDCフィールドを入力します。これによって、ログに関連付けられているその他の診断情報が提供されます。my\_mdcフィールドは次のようになります:
      ```
      { 
        "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"
      }
      ```

      flowID (タスクIDを表す)やflowExecutionId (タスク実行IDを表す)など、特定のMDCフィールドを取得する場合は、"my\_mdc": { "$resolver": "mdc" }行を次に置き換えます:
      ```
      "taskId": {"$resolver": "mdc", "key": "flowID"},
      "executionId": {"$resolver": "mdc", "key": "flowExecutionId"},
      ```

      taskIdとexecutionIdというフィールド名はあくまでも例に過ぎません。出力に含めたいMDCフィールドには、意味がある任意の名前を使用できます。
4. お使いのJMSシステムを設定し、jsonLogMinTemplate.jsonではなく、新しいこのjsonLogMinTemplateCustom.jsonテンプレートが使われるようにします。

[^1^](https://help.qlik.com/talend/ja-JP/remote-engine-user-guide-linux/Cloud/config-extra-jms-appender#fnsrc_1) これは一例です。destinationBindingNameの部分はdynamicQueues/myQueueNameやdynamicTopics/myTopicNameとなることもあります。

[^2^](https://help.qlik.com/talend/ja-JP/remote-engine-user-guide-linux/Cloud/config-extra-jms-appender#fnsrc_2) これは一例です。JMSホストとそのポートを定義する必要があります。

[^3^](https://help.qlik.com/talend/ja-JP/remote-engine-user-guide-linux/Cloud/config-extra-jms-appender#fnsrc_3) adminは、userNameとpasswordの一例に過ぎません。