package com.vladmihalcea.flexypool.metric.codahale; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Slf4jReporter; import com.vladmihalcea.flexypool.common.ConfigurationProperties; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.concurrent.TimeUnit; /** * <code>Slf4jMetricReporter</code> - Slf4j Metric Reporter * * @author Vlad Mihalcea * @since 1.0 */ public class Slf4jMetricReporter implements MetricsLifeCycleCallback { private static final Logger LOGGER = LoggerFactory.getLogger(CodahaleMetrics.class); private Slf4jReporter slf4jReporter; private long metricLogReporterMillis; /** * Create a Log Reporter and activate it if the metricLogReporterMillis property is greater than zero. * * @param configurationProperties configuration properties * @param metricRegistry metric registry * @return {@link Slf4jMetricReporter} */ @Override public Slf4jMetricReporter init(ConfigurationProperties configurationProperties, MetricRegistry metricRegistry) { metricLogReporterMillis = configurationProperties.getMetricLogReporterMillis(); if (metricLogReporterMillis > 0) { this.slf4jReporter = Slf4jReporter .forRegistry(metricRegistry) .outputTo(LOGGER) .build(); } return this; } /** * Start Log Reporter */ @Override public void start() { if (slf4jReporter != null) { slf4jReporter.start(metricLogReporterMillis, TimeUnit.MILLISECONDS); } } /** * Stop Log Reporter */ @Override public void stop() { if (slf4jReporter != null) { slf4jReporter.stop(); } } }