public synchronized void addSlf4jReporter(final long reportIntervalInMS, final String loggerName) {
        if (null != slf4jReporter) {
            log.debug("Metrics Slf4jReporter already active; not creating another");
            return;
        }

        Slf4jReporter.Builder b = Slf4jReporter.forRegistry(getRegistry());

        if (null != loggerName) {
            Logger l = LoggerFactory.getLogger(loggerName);
            if (null != l) {
                b.outputTo(l);
            } else {
                log.error("Logger with name {} could not be obtained", loggerName);
            }
        }

        slf4jReporter = b.build();
        slf4jReporter.start(reportIntervalInMS, TimeUnit.MILLISECONDS);

        log.info("Configured Metrics Slf4jReporter configured with interval={}ms and loggerName={}", reportIntervalInMS, loggerName);
    }
Create a {@link Slf4jReporter} attached to the {@code MetricsRegistry}.
<p/>
If {@code loggerName} is null, or if it is non-null but
LoggerFactory.getLogger(loggerName) returns null, then Metrics's
default Slf4j logger name is used instead.

@param reportIntervalInMS milliseconds to wait between writing metrics to the Slf4j
                          logger
@param loggerName         the name of the Slf4j logger that receives metrics
gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/util/MetricManager.java