metriks 记录到文件不起作用

metriks log to file not working

我写了一个基本程序来测试 ruby 指标 gem

require 'metriks'
require 'metriks/reporter/logger'

@registry = Metriks::Registry.new

@logger = Logger.new('/tmp/metrics.log')
@reporter = Metriks::Reporter::Logger.new(:logger => @logger)
@reporter.start

@registry.meter('tasks').mark
print "Hello"
@registry.meter('tasks').mark

@reporter.stop

在我执行程序后,日志中除了创建之外什么都没有。

$ cat /tmp/metrics.log
# Logfile created on 2015-06-15 14:23:40 -0700 by logger.rb/44203

您应该在实例化 Metriks::Reporter::Logger 时传入您自己的注册表,或者如果您使用记录器来记录指标,则使用默认注册表 (Metrics::Resgitry.default)。

此外,默认日志写入间隔为 60 秒,您的代码在此之前完成,因此即使一切设置正常,也不会被记录下来。所以,既然你想使用自己的注册表,这应该适合你(我要加一点睡眠,因为我要使用 1 秒的间隔):

require 'metriks'
require 'metriks/reporter/logger'

@registry = Metriks::Registry.new

@logger = Logger.new('/tmp/metrics.log')
@reporter = Metriks::Reporter::Logger.new(:logger => @logger, 
                                          :registry => @registry
                                          :interval => 1)
@reporter.start

@registry.meter('tasks').mark
print "Hello"
@registry.meter('tasks').mark

# Just giving it a little time so the metrics will be recorded.
sleep 2

@reporter.stop

但我真的不认为短间隔是好的。

更新:此外,我认为 @reporter.write 将帮助您立即记下日志,而不管时间间隔如何。所以你不必使用 sleep (更好)。