SAP CPI Groovy Payload Logging

You are here:
← All Topics

SAP CPI bietet Ihnen die Möglichkeit Groovy Skripts zu verwenden. In dem von uns entwickelten SAP Standard Training WDEI1 zeigen wir Ihnen wie Sie Groovy richtig verwenden.

Eine typische Anforderung stellt das Schreiben von Attachments in Message Processing Log dar. Nachfolgenden zeigen wir Ihnen wie diese Anforderung mit Groovy gelöst werden kann. Bitte beachten Sie, dass für das Message Processing Log eine Größenbeschränkung besteht die Sie der Dokumentation der SAP Cloud Platform Integration entnehmen können.

Infos zum WDEI1 Training

Der SAP WDEI1  bietet Ihnen ein 5-tägige praxisnahe Einführung in Entwicklung, Architektur und Sicherheit der SAP Cloud Platform Integration.

Groovy Payload Logging
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
  	//Body  als String auslesen
    def body = message.getBody(java.lang.String);

    //Message Log Instanz holen
    def log = messageLogFactory.getMessageLog(message);

    //Prüfen ob das Log vorhanden ist
    if(log != null) {
        //Schreiben der String Property
        log.setStringProperty("WDEI1 Logging", "MPL String Property");
			
        //Schreiben des Attachments
        log.addAttachmentAsString("WDEI1 Gruppe 00 - Message Body", body, "application/xml");
    }

    return message;
}

Selbstverständlich sollten Sie beim Schreiben in Message Processing Log die Log Konfiguration berücksichtigen. Sie haben über eine Exchange Property die Möglichkeit auf die Log Konfiguration zuzugreifen. 

Groovy Payload Logging mit Log Level
import com.sap.gateway.ip.core.customdev.util.Message;
import java.util.HashMap;
def Message processData(Message message) {
    //Body 
    def body = message.getBody(java.lang.String);
    
    def map = message.getProperties();
    def logConfig = map.get("SAP_MessageProcessingLogConfiguration");
    def logLevel  = logConfig.logLevel as String;
    
    if(logLevel.equals("DEBUG") || logLevel.equals("TRACE") ) {
        def messageLog = messageLogFactory.getMessageLog(message);
        if(messageLog != null) {
            messageLog.addAttachmentAsString("Outgoing Message", body, "text/plain")
        }
    }

    return message;
}