class SortedTableLogReporter extends ScheduledMetrics2Reporter {

	@Override
	public void reportMetrics(Map<MetricName, Gauge> gauges,
							  Map<MetricName, Counter> counters,
							  Map<MetricName, Histogram> histograms,
							  Map<MetricName, Meter> meters,
							  Map<MetricName, Timer> timers) {

		final Timer.Context time = Stagemonitor.getMetric2Registry().timer(reportingTimeMetricName).time();

		StringBuilder sb = new StringBuilder(1000);
		printWithBanner("Metrics", '=', sb);
		sb.append('\n');

		try {
			logGauges(gauges, sb);
			logCounters(counters, sb);
			logHistograms(histograms, sb);
			logMeters(meters, sb);
			logTimers(timers, sb);
			sb.append('\n');
		} catch (Exception e) {
			log.error(e.getMessage(), e);
		} finally {
			log.info(sb.toString());
			time.stop();
		}
	}

	private  SortedTableLogReporter(Builder builder);

}