Start with creating a new Event Handler class to handle the messages. Note that the parsing should be done in the event() method as that will be called for each syslog event.
public class SyslogMessageHandler implements SyslogServerSessionEventHandlerIF {
@Override
public void event(Object session, SyslogServerIF syslogServer,
SocketAddress socketAddress, SyslogServerEventIF event) {
// Simple parsing for Strings in the message
if (!event.getMessage().contains(" msg=\"")) {
Logger.getLogger(getClass().getSimpleName()).log(Level.INFO, event.getMessage());
}
// You can also build Objects and/or use Pattern/Matcher for parsing.
MyHTTPLogInfo info = new MyHTTPLogInfo(event.getMessage());
Pattern myPattern = Pattern.compile("^GET\\s+/([^\\s\\?]*)(\\?\\S*)?\\s+HTTP/1\\.\\d$");
Matcher matcher = myPattern.matcher(info.getHttpRequest());
if (matcher.matches()) {
Logger.getLogger(getClass().getSimpleName()).log(Level.INFO, info.getMyCustomLogOutput());
}
}
@Override
public void exception(Object session, SyslogServerIF syslogServer, SocketAddress socketAddress, Exception exception) {
Logger.getLogger(getClass().getSimpleName()).log(Level.INFO, "exception()");
}
@Override
public Object sessionOpened(SyslogServerIF syslogServer, SocketAddress socketAddress) {
Logger.getLogger(getClass().getSimpleName()).log(Level.INFO, "sessionOpened()");
return new Date();
}
@Override
public void sessionClosed(Object session, SyslogServerIF syslogServer, SocketAddress socketAddress, boolean timeout) {
Logger.getLogger(getClass().getSimpleName()).log(Level.INFO, "sessionClosed() {0}", session);
}
@Override
public void initialize(SyslogServerIF syslogServer) {
Logger.getLogger(getClass().getSimpleName()).log(Level.INFO, "initialize()");
}
@Override
public void destroy(SyslogServerIF syslogServer) {
Logger.getLogger(getClass().getSimpleName()).log(Level.INFO, "destroy()");
}
Finally register that new class as an EventHandler in the syslog4j config:
eventHandler = new SyslogMessageHandler();
config.addEventHandler(eventHandler);
Then you are ready to start testing and debugging your various formats and patterns :)