io.dropwizard.metrics.common.ConsoleReporterFactory Maven / Gradle / Ivy
package io.dropwizard.metrics.common;
import com.codahale.metrics.ConsoleReporter;
import com.codahale.metrics.MetricRegistry;
import com.codahale.metrics.ScheduledReporter;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
import jakarta.validation.constraints.NotNull;
import java.io.PrintStream;
import java.util.TimeZone;
/**
* A factory for configuring and building {@link ConsoleReporter} instances.
*
* Configuration Parameters:
*
*
* Name
* Default
* Description
*
*
* timeZone
* UTC
* The timezone to display dates/times for.
*
*
* output
* stdout
* The stream to write to. One of {@code stdout} or {@code stderr}.
*
*
* See {@link BaseFormattedReporterFactory} for more options.
*
*
* See {@link BaseReporterFactory} for more options.
*
*
*/
@JsonTypeName("console")
public class ConsoleReporterFactory extends BaseFormattedReporterFactory {
public enum ConsoleStream {
STDOUT,
STDERR;
public PrintStream get() {
if (this == STDERR) {
return System.err;
} else {
return System.out;
}
}
}
@NotNull
private TimeZone timeZone = TimeZone.getTimeZone("UTC");
@NotNull
private ConsoleStream output = ConsoleStream.STDOUT;
@JsonProperty
public TimeZone getTimeZone() {
return timeZone;
}
@JsonProperty
public void setTimeZone(TimeZone timeZone) {
this.timeZone = timeZone;
}
@JsonProperty
public ConsoleStream getOutput() {
return output;
}
@JsonProperty
public void setOutput(ConsoleStream stream) {
this.output = stream;
}
@Override
public ScheduledReporter build(MetricRegistry registry) {
return ConsoleReporter.forRegistry(registry)
.convertDurationsTo(getDurationUnit())
.convertRatesTo(getRateUnit())
.filter(getFilter())
.formattedFor(getLocale())
.formattedFor(getTimeZone())
.outputTo(getOutput().get())
.disabledMetricAttributes(getDisabledAttributes())
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy