Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

Konfigurieren eines JMS-Appenders

Sie möchten Logs ggf. an ein ActiveMQ-Backend-System senden.

Talend Cloud unterstützt das ActiveMQ TCP-Protokoll.

Prozedur

  1. Öffnen Sie die Datei <RemoteEngineInstallationDirectory>/etc/org.ops4j.pax.logging.cfg und fügen Sie folgende Zeilen hinzu:

    Example

    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. Speichern Sie die Datei.
  3. Fügen Sie die MDC-Informationen (Mapped Diagnostic Context) in der JSON-Vorlagendatei hinzu, sodass die Ausgabe-Logs, sofern zutreffend, die MDC-Informationen enthalten. Die MDC-Informationen enthalten die Ausführungs-ID einer Task von Talend Management Console.
    1. Erstellen Sie in <RemoteEngineInstallationDirectory>/etc eine Datei und geben Sie ihr den Namen jsonLogMinTemplateCustom.json.
    2. Fügen Sie in der neuen Datei folgende Zeilen hinzu, um einen MDC-Resolver zu erstellen:

      Example

      {
         "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"
         }
      }

      Im Beispiel wird ein JSON-Objekt definiert, um die Felder anzugeben, die in die MDC-Ausgabe eingeschlossen werden sollen. Das Objekt verwendet Schlüssel-Wert-Paare, in denen die Schlüssel die Ausgabefelder und die Werte die Resolver zum Befüllen dieser Felder angeben.

      Mit der Zeile "my_mdc": { "$resolver": "mdc" } wird ein Feld mit dem Namen my_mdc in der Ausgabe erstellt. Der Resolver mdc befüllt dieses Feld mit allen MDC-Feldern. Dadurch werden zusätzliche Diagnoseinformationen im Zusammenhang mit den Logs bereitgestellt. Ein Feld my_mdc kann wie folgt aussehen:
      { 
        "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"
      }
      Um spezifische MDC-Felder wie flowID (zur Darstellung einer Task-ID) und flowExecutionId (zur Darstellung einer Task-Ausführungs-ID) abzurufen, ersetzen Sie die Zeile "my_mdc": { "$resolver": "mdc" } mit:
      "taskId": {"$resolver": "mdc", "key": "flowID"},
      "executionId": {"$resolver": "mdc", "key": "flowExecutionId"},
      Die Feldnamen taskId und executionId sind nur Beispiele. Sie können beliebige aussagekräftige Namen verwenden, um die MDC-Felder zu erhalten, die Sie in die Ausgabe einschließen möchten.
  4. Konfigurieren Sie Ihr JMS-System für die Verwendung der neuen Vorlage jsonLogMinTemplateCustom.json anstelle der Standard-Vorlagendatei jsonLogMinTemplate.json.
1 Dies ist ein Beispiel. Der Name destinationBindingName könnte dynamicQueues/myQueueName oder dynamicTopics/myTopicName lauten.
2 Dies ist ein Beispiel. Sie müssen Ihren JMS-Host und den zugehörigen Port definieren.
3 admin ist nur ein Beispiel für userName und password.

Hat diese Seite Ihnen geholfen?

Wenn Sie ein Problem mit dieser Seite oder ihrem Inhalt feststellen, sei es ein Tippfehler, ein ausgelassener Schritt oder ein technischer Fehler, informieren Sie uns bitte!