private void printTimer(final Timer timer) {
        final Snapshot snapshot = timer.getSnapshot();
        printIfEnabled(MetricAttribute.COUNT, String.format(this.locale, "             count = %d", timer.getCount()));
        printIfEnabled(MetricAttribute.MEAN_RATE, String.format(this.locale, "         mean rate = %2.2f calls/%s",
            convertRate(timer.getMeanRate()), this.rateUnit));
        printIfEnabled(MetricAttribute.M1_RATE, String.format(this.locale, "     1-minute rate = %2.2f calls/%s",
            convertRate(timer.getOneMinuteRate()), this.rateUnit));
        printIfEnabled(MetricAttribute.M5_RATE, String.format(this.locale, "     5-minute rate = %2.2f calls/%s",
            convertRate(timer.getFiveMinuteRate()), this.rateUnit));
        printIfEnabled(MetricAttribute.M15_RATE, String.format(this.locale, "    15-minute rate = %2.2f calls/%s",
            convertRate(timer.getFifteenMinuteRate()), this.rateUnit));

        printIfEnabled(MetricAttribute.MIN, String.format(this.locale, "               min = %2.2f %s",
            convertDuration(snapshot.getMin()), this.durationUnit));
        printIfEnabled(MetricAttribute.MAX, String.format(this.locale, "               max = %2.2f %s",
            convertDuration(snapshot.getMax()), this.durationUnit));
        printIfEnabled(MetricAttribute.MEAN, String.format(this.locale, "              mean = %2.2f %s",
            convertDuration(snapshot.getMean()), this.durationUnit));
        printIfEnabled(MetricAttribute.STDDEV, String.format(this.locale, "            stddev = %2.2f %s",
            convertDuration(snapshot.getStdDev()), this.durationUnit));
        printIfEnabled(MetricAttribute.P50, String.format(this.locale, "            median = %2.2f %s",
            convertDuration(snapshot.getMedian()), this.durationUnit));
        printIfEnabled(MetricAttribute.P75, String.format(this.locale, "              75%% <= %2.2f %s",
            convertDuration(snapshot.get75thPercentile()), this.durationUnit));
        printIfEnabled(MetricAttribute.P95, String.format(this.locale, "              95%% <= %2.2f %s",
            convertDuration(snapshot.get95thPercentile()), this.durationUnit));
        printIfEnabled(MetricAttribute.P98, String.format(this.locale, "              98%% <= %2.2f %s",
            convertDuration(snapshot.get98thPercentile()), this.durationUnit));
        printIfEnabled(MetricAttribute.P99, String.format(this.locale, "              99%% <= %2.2f %s",
            convertDuration(snapshot.get99thPercentile()), this.durationUnit));
        printIfEnabled(MetricAttribute.P999, String.format(this.locale, "            99.9%% <= %2.2f %s",
            convertDuration(snapshot.get999thPercentile()), this.durationUnit));
    }
Builds a {@link MetricReporter} with the given properties.

@return a {@link MetricReporter}
jraft-core/src/main/java/com/alipay/sofa/jraft/util/MetricReporter.java