2016-10-11 11 views
0

Я пытаюсь создать пользовательский репортер для DropWizard Metrics, но не могу найти какой-либо ресурс или пример, который показывает, как его создать, расширив ScheduledReporter. Я мог бы расширить этот класс, следуя за существующими репортерами (CSV, SLF4J и т. Д.), Но где я могу его зарегистрировать?DropWizard Пользовательский репортер

Вот выдержка из пользовательского Reporter Я пытаюсь зарегистрировать:

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); 
     } 
    } 
} 

И это правильный путь для создания пользовательского Reporter или есть другой способ?

Спасибо advance.-

+0

Да, это правильный подход. Вы регистрируете их точно так же, как вы регистрируете другие (см. Документы показателей) – pandaadb

+0

@pandaadb Да, но я ничего не зарегистрировал. –

ответ

0

Да, вы можете реализовать их таким же образом. Что касается регистрации, это обычно делается в вашем основном приложении после того, как Metrics была создана DW.

Например, в методе выполнения:

@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")); 
    } 

Надежда, что помогает,

Артур

+0

Ты не понял мой вопрос. См. Обновленный вопрос. –

+0

Опять же: Да, это правильный способ создать своего собственного репортера и увидеть мой ответ, где и как вы его зарегистрируете. Что еще вы хотите знать, потому что это единственные вопросы, которые я вижу в вашем посте ... – pandaadb

 Смежные вопросы

  • Нет связанных вопросов^_^