package com.google.code.joto.eventrecorder.impl; import java.text.DateFormat; import java.text.SimpleDateFormat; import org.slf4j.Logger; import com.google.code.joto.eventrecorder.RecordEventChangeVisitor; import com.google.code.joto.eventrecorder.RecordEventSummary; import com.google.code.joto.eventrecorder.RecordEventStoreChange.AddRecordEventStoreEvent; import com.google.code.joto.eventrecorder.RecordEventStoreChange.StartRecordingEvent; import com.google.code.joto.eventrecorder.RecordEventStoreChange.StopRecordingEvent; import com.google.code.joto.eventrecorder.RecordEventStoreChange.TruncateRecordEventStoreEvent; /** * a simple RecordEventChangeVisitor for logging events to slf4j */ public class SummaryLoggerRecordEventHandler implements RecordEventChangeVisitor { private Logger logger; private final DateFormat displayDateFormat = new SimpleDateFormat("HH:mm:ss"); // ------------------------------------------------------------------------- public SummaryLoggerRecordEventHandler(Logger logger) { super(); this.logger = logger; } // ------------------------------------------------------------------------- @Override public void caseAddEvent(AddRecordEventStoreEvent p) { if (logger.isInfoEnabled()) { RecordEventSummary e = p.getEventSummary(); String msg = "RecordEvent#" + e.getEventId() + " " + displayDateFormat.format(e.getEventDate()) + " " + e.getEventType() + " " + e.getEventSubType() + " " + e.getEventMethodName() + ((e.getEventMethodDetail() != null)? e.getEventMethodDetail() : "") ; logger.info(msg); } } @Override public void caseStartRecording(StartRecordingEvent p) { logger.info("start recording"); } @Override public void caseStopRecording(StopRecordingEvent p) { logger.info("stop recording"); } @Override public void caseTruncateEvent(TruncateRecordEventStoreEvent p) { logger.info("truncate recorded events " + p.getFromEventId() + "<= ...< " + p.getToEventId()); } // override java.lang.Object // ------------------------------------------------------------------------- @Override public String toString() { return "SummaryLoggerRecordEventHandler[]"; } }