当前位置: 首页 > 知识库问答 >
问题:

DropWizard自定义报告程序

微生欣怡
2023-03-14

我正在尝试为DropWizard Metrics创建一个自定义报告器,但找不到任何资源或示例来显示如何通过扩展schduledReports来创建一个报告器。我可以通过遵循现有报告器(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);
        }
    }
}

而且,这是创建自定义报告程序的正确方法还是其他方法?

先谢谢你。

共有1个答案

熊锐进
2023-03-14

是的,您可以以相同的方式实现它们。至于注册,通常是在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"));
    }

希望有帮助,

阿图尔

 类似资料:
  • # 5.1 自定义报告是什么? {#51-自定义报告是什么?} 在进行网站分析的时候,通常需要关联多个维度进行分析, 同时根据不同组合维度,选取合适的衡量指标。 例如,衡量 广告流量 达成的事件数 或 不同来源流量的所使用客户端及其地域分布。 在默认报告中,系统提供了单个维度的分析视角。 而自定义报告则可实现关联不同分析维度,衡量站点数据表现。 示例如下: 维度1 维度2 维度3 衡量指标 广告维

  • 我已经为dropwizard (codehale)度量注册表配置了一个基本的sl4j reporter。这是报告器配置: 我正在接收的日志不是我所期望的(期望使用metricRegistry注册的计时器、计数器的可解析输出)。这是我每30秒实际看到的内容(与报告器配置相匹配): …… java: 55)org.slf4j.helpers.FormattingTuple@39fda09e 无论如何,

  • 我希望更改Serenity报告中的CSS和徽标。另外,我想在Serenity报告中添加一些自定义文本或指向某些测试的链接。就像生成了一个excel报告,我希望在报告的测试步骤中提供它的链接。实现这一目标的最佳方法是什么?

  • 背景: null > @test(groups={“init”})public void openURL() 包含用于启动webdriver并使用给定URL打开chrome>实例的webdriver代码。 @test(dependsonGroups={“init”})public void testLogin() 包含的webdriver代码指向: 1。找到用户名密码文本输入元素,从属性文件中输入