Skip to Content

Adding Audit Log in PI Mapping UDF in PI Single Stack

Hi Guys,

Perhaps this is not a new topic , however I thought quickly consolidating all the steps required for adding a audit log entry from PI user defined function. Hope it will be helpful.

Before we go to the steps lets quickly go through the difference between Trace Vs Audit Log.


Trace

Entries added using the Trace object are added in the logs and traces, which can be viewed in  NWA -> Troubleshooting -> Logs and Traces -> Log Viewer application and are not part of the  Message Log often referred as Audit log of a message.

Audit

Entries added using Audit object are added in the Message Logs (Audit Logs) and are associated  with a message and viewed from message monitor.

Step 1 : Download a com.sap.aii.af.ms.ifc_api.jar.jar from PI server ( you can ask your basis team to provide it) and import in your ESR namespace as imported archive object. This jar is required to access the Audit and MessageKey class in the UDF at the compile time.

Step 2: Add the imported archive in the UDF ‘Archive Used’ tab.

Step 3: Add class com.sap.engine.interfaces.messaging.api.* and com.sap.engine.interfaces.messaging.api.auditlog.* under import tab.

Step 3: Use the below code snippet to add the audit log entries in the UDF

MessageKey key = null

AuditAccess audit = null;

final String DASH = “-“;

try{

    String msgID=container.getInputHeader().getMessageId();

    String uuidTimeLow = msgID.substring(0, 8);  

    String uuidTimeMid = msgID.substring(8, 12);  

    String uuidTimeHighAndVersion = msgID.substring(12, 16);  

    String uuidClockSeqAndReserved = msgID.substring(16, 18);  

    String uuidClockSeqLow = msgID.substring(18, 20);  

    String uuidNode = msgID.substring(20, 32);  

    String msgUUID =   uuidTimeLow + DASH + uuidTimeMid + DASH + uuidTimeHighAndVersion + DASH  + uuidClockSeqAndReserved + uuidClockSeqLow + DASH + uuidNode;

    audit = PublicAPIAccessFactory.getPublicAPIAccess().getAuditAccess();

    key = new MessageKey(msgUUID, MessageDirection.OUTBOUND);

    audit.addAuditLogEntry(key, AuditLogStatus.SUCCESS, “Audit Log entry added successfully !!”);

}

catch(Exception ex){

    throw new StreamTransformationException(“Exception Occured”,ex);

}

Thats all , now you can run a message verify if the entry ” Audit Log entry added successfully !!”  in you message log/audit log.

Hope this provides a quick reference for adding audit logs.

Vishal Javalkar

5 Comments
You must be Logged on to comment or reply to a post.