Syslog Collection Agent Example
The example below demonstrates how to extract the contents of a SyslogMessageUDR
.
Syslog workflow
Set the output route from Syslog_1
 to synchronous in order to facilitate debugging. This causes the messages to be processed in sequential order. For other purposes the route should be set to asynchronous (default).
Example - Analysis_1 APL Code
consume {
debug("*** BEGIN ***");
debug("AppName: " + input.AppName);
debug("Facility: " + input.Facility);
debug("HostName: " + input.HostName);
debug("Message: " + input.Msg);
debug("MsgId: " + input.MsgId);
debug("ProcId: " + input.ProcId);
debug("Severity: " + input.Severity);
debug("Timestamp: " + input.Timestamp);
debug("Version: " + input.Version);
if(null != input.StructuredData) {
debugStructuredData(input.StructuredData);
}
debug("*** END ***");
}
void debugStructuredData(map<string,map<string,string>> sdData) {
debug("StructuredData:");
//Get the SD-ELEMENT keys from Structured Data
list<string> sdKeys = mapKeys(sdData);
//Get the number of SD elements
int sdSize = listSize(sdKeys);
//Iterate through the SD-ELEMENTs
for(int i=0;i<sdSize;i++) {
debug("SD-ELEMENT #" + (i+1));
//Get the next SD-ELEMENT
map<string,string> element = mapGet(sdData, (string) listGet(sdKeys,0));
//Get the SD-PARAM keys in the SD-ELEMENT
list<string> paramKeys = mapKeys(element);
//Get the number of SD-PARAMs
int paramSize = listSize(paramKeys);
//Iterate through the SD-PARAMs
for(int j=0;j<paramSize;j++) {
string curKey = listGet(paramKeys,j);
string curVal = mapGet(element, curKey);
debug("SD-PARAM #" + (j+1) + ":" + curKey + ":" + curVal);
}
}
}