メイン コンテンツをスキップする 補完的コンテンツへスキップ

JMSアペンダーを設定

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

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

手順

  1. <RemoteEngineInstallationDirectory>/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. <RemoteEngineInstallationDirectory>/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"},
      taskIdexecutionIdというフィールド名はあくまでも例に過ぎません。出力に含めたいMDCフィールドには、意味がある任意の名前を使用できます。
  4. お使いのJMSシステムを設定し、jsonLogMinTemplate.jsonではなく、新しいこのjsonLogMinTemplateCustom.jsonテンプレートが使われるようにします。
1 これは一例です。destinationBindingNameの部分はdynamicQueues/myQueueNamedynamicTopics/myTopicNameとなることもあります。
2 これは一例です。JMSホストとそのポートを定義する必要があります。
3 adminは、userNamepasswordの一例に過ぎません。

このページは役に立ちましたか?

このページまたはコンテンツにタイポ、ステップの省略、技術的エラーなどの問題が見つかった場合はお知らせください。