2015-01-26 59 views
0

我在我的Scala应用程序中使用了Codahale指标,但似乎没有看到获取定时操作的最后一个值的方法。我可以得到平均值,中位数和百分位数 - 所有来自直方图的好东西 - 但我只想知道最后一次手术花了多长时间!如何从Codahale度量标准计时器获取上次使用时间?

查看快照中的条目零并将其从纳秒到毫秒的值缩放?这似乎并不正确...

我一定会错过显而易见的!

t.time { 

     iService.availCheck(q) 

    } match { 

     case ReturnInfo(Some(true)) => 

     // The HUB says TRUE, this name is available. That's gold. 

     logger.debug("Avail check for (" + q + ") HUB TRUE: " + (t.snapshot.getValues()(0)/100000.0).toString + "ms") 

     Ok(Some(true)) 
    } 

回答

0

找到了答案 - 嵌入在t.time调用中的stop()函数返回经过的时间。我只需重构我的代码即可访问它。如果没有消耗,它会丢失。噗。

去图;)

0

如果你需要的是一个定时的最后一个值,我创造了这个小包装类

public class GaugeTimer extends Timer implements Gauge<Long> { 

    private Long lastValue = 0L; 

    @Override 
    public void update(long duration, TimeUnit unit) { 
    lastValue = unit.toNanos(duration); 
    } 

    @Override 
    public Long getValue() { 
    return lastValue; 
    } 
} 

使用定时器和以前一样改变

lastValue = unit.toNanos(duration); 

任何时间单位你想要记录的价值。

相关问题