Java DropWizard自定义报告程序
我正在尝试为DropWizard Metrics创建一个自定义报告器,但找不到任何资源或示例来说明如何通过扩展Java DropWizard自定义报告程序,java,dropwizard,metrics,Java,Dropwizard,Metrics,我正在尝试为DropWizard Metrics创建一个自定义报告器,但找不到任何资源或示例来说明如何通过扩展ScheduledReporter来创建报告器。我可以通过跟踪现有的Reporter(CSV、SLF4J等)来扩展这个类,但是我应该在哪里注册它呢 以下是我试图注册的定制记者的摘录: public class DbReporter extends ScheduledReporter { private final Connection connection; privat
ScheduledReporter
来创建报告器。我可以通过跟踪现有的Reporter(CSV、SLF4J等)来扩展这个类,但是我应该在哪里注册它呢
以下是我试图注册的定制记者的摘录:
public class DbReporter extends ScheduledReporter {
private final Connection connection;
private final Clock clock;
public static DbReporter.Builder forRegistry(MetricRegistry registry) {
return new DbReporter.Builder(registry);
}
private DbReporter(MetricRegistry registry, Connection connection, Clock clock, MetricFilter filter, TimeUnit rateUnit, TimeUnit durationUnit) {
super(registry, "db-reporter", filter, rateUnit, durationUnit);
this.connection = connection;
this.clock = clock;
}
//...
public static class Builder {
private final MetricRegistry registry;
private Connection connection;
private TimeUnit rateUnit;
private TimeUnit durationUnit;
private MetricFilter filter;
private Clock clock;
private Builder(MetricRegistry registry) {
this.registry = registry;
this.connection = null;
this.rateUnit = TimeUnit.SECONDS;
this.durationUnit = TimeUnit.MILLISECONDS;
this.filter = MetricFilter.ALL;
this.clock = Clock.defaultClock();
}
public DbReporter.Builder outputTo(Connection connection) {
this.connection = connection;
return this;
}
public DbReporter.Builder convertRatesTo(TimeUnit rateUnit) {
this.rateUnit = rateUnit;
return this;
}
public DbReporter.Builder convertDurationsTo(TimeUnit durationUnit) {
this.durationUnit = durationUnit;
return this;
}
public DbReporter.Builder filter(MetricFilter filter) {
this.filter = filter;
return this;
}
public DbReporter build() {
return new DbReporter(this.registry, this.connection, this.clock, this.filter, this.rateUnit, this.durationUnit);
}
}
}
这是创建自定义报告器的正确方法还是有其他方法
提前感谢。-是的,您可以用同样的方法实现它们。至于注册,这通常是在DW实例化度量之后在主应用程序中完成的 例如,在run方法中:
@Override
public void run(final Configuration configuration,
final Environment environment) {
log.info(String.format("Starting %s server with version: %s", getName(), configuration.getVersion()));
CsvReporter.forRegistry(environment.metrics()).build(new File("path/to/csv"));
}
希望有帮助
是的,这是正确的方法。你注册它们的方式与注册其他的完全相同(参见度量文档)@pandaadb是的,但我没有注册任何东西。你不理解我的问题。请参阅更新的问题。再次说明:是的,这是创建您自己的自定义reporter的正确方法,并查看我的答案,以及您将在哪里以及如何注册它。你还想知道什么,因为这些是我在你的帖子中看到的唯一问题。。。