
se.l4.vibe.backend.LoggingBackend Maven / Gradle / Ivy
package se.l4.vibe.backend;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import se.l4.vibe.Vibe;
import se.l4.vibe.event.EventListener;
import se.l4.vibe.event.EventSeverity;
import se.l4.vibe.event.Events;
import se.l4.vibe.probes.Probe;
import se.l4.vibe.probes.SampleListener;
import se.l4.vibe.probes.SampledProbe;
import se.l4.vibe.probes.Sampler;
import se.l4.vibe.timer.Timer;
/**
* Basic backend that will log a message every time something is sampled.
*
* @author Andreas Holstenson
*
*/
public class LoggingBackend
implements VibeBackend
{
private final Logger logger;
public LoggingBackend()
{
this(Vibe.class);
}
public LoggingBackend(String root)
{
logger = LoggerFactory.getLogger(root);
}
public LoggingBackend(Class> root)
{
logger = LoggerFactory.getLogger(root);
}
@Override
public void export(String path, Sampler> series)
{
series.addListener(new PrintSampleListener(logger, path));
}
@Override
public void export(String path, Probe> probe)
{
}
@Override
public void export(String path, Events> events)
{
events.addListener(new PrintEventListener(logger, path));
}
@Override
public void export(String path, Timer timer)
{
}
private static class PrintSampleListener
implements SampleListener
{
private final String path;
private final Logger logger;
public PrintSampleListener(Logger logger, String path)
{
this.logger = logger;
this.path = path;
}
@Override
public void sampleAcquired(SampledProbe probe, Sampler.Entry entry)
{
logger.info("{}: {}", path, entry.getValue());
}
}
private static class PrintEventListener
implements EventListener
{
private final String path;
private final Logger logger;
public PrintEventListener(Logger logger, String path)
{
this.logger = logger;
this.path = path;
}
@Override
public void eventRegistered(Events events, EventSeverity severity, Object event)
{
switch(severity)
{
case DEBUG:
logger.debug("{}: {}", path, event);
break;
case INFO:
logger.info("{}: {}", path, event);
break;
case WARN:
logger.warn("{}: {}", path, event);
break;
case ERROR:
logger.error("{}: {}", path, event);
break;
case CRITICAL:
logger.error("CRITICAL: {}: {}", path, event);
break;
}
}
}
@Override
public void close()
{
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy