private void addExceptionFifoBufferListener() { Monitor mon = getMonitor(MonitorFactory.EXCEPTIONS_LABEL, "Exception"); if (!mon.hasListener("value", "FIFOBuffer")) { mon.addListener("value", JAMonListenerFactory.get("FIFOBuffer")); } }
private JAMonBufferListener getExceptionBufferListener() { if (MonitorFactory.exists(MonitorFactory.EXCEPTIONS_LABEL, EXCEPTION)) { Monitor mon = MonitorFactory.getMonitor(MonitorFactory.EXCEPTIONS_LABEL, EXCEPTION); if (mon.hasListener("value", "FIFOBuffer")) { JAMonListener bufferListener = mon.getListenerType("value").getListener("FIFOBuffer"); if (bufferListener instanceof JAMonBufferListener) { return (JAMonBufferListener) bufferListener; } } } return null; }
@Override public String getMostRecentException() { if (!MonitorFactory.exists(LABEL, UNITS)) { return "No exceptions have been thrown"; } if (!MonitorFactory.getMonitor(LABEL, UNITS).hasListener("value", "FIFOBuffer")) { return "Exception Stacktrace tracking is not enabled."; } JAMonListener listener = MonitorFactory.getMonitor(LABEL, UNITS).getListenerType("value").getListener("FIFOBuffer"); if (!(listener instanceof JAMonBufferListener) || ((JAMonBufferListener) listener).isEmpty()) { return "There are no stacktraces"; } return getMostRecentStacktrace((JAMonBufferListener) listener); }
/** If true is passed in then a buffer will contain the most recent stack traces. This is viewable via the jamon * web app or programmatically. This is very handy for debugging. * * By default this is enabled (true) * @param enable */ public void setExceptionBufferListener(boolean enable) { MonKey key = new MonKeyImp(MonitorFactory.EXCEPTIONS_LABEL, EXCEPTION); boolean hasBufferListener = MonitorFactory.getMonitor(key).hasListener("value", "FIFOBuffer"); if (enable && !hasBufferListener) { MonitorFactory.getMonitor(key).addListener("value", JAMonListenerFactory.get("FIFOBuffer")); } else if (!enable && hasBufferListener) { MonitorFactory.getMonitor(key).removeListener("value", "FIFOBuffer"); } }