【问题标题】:metriks log to file not working度量日志到文件不起作用
【发布时间】:2015-06-16 00:26:18
【问题描述】:

我写了一个基本的程序来测试 ruby​​ metriks 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

【问题讨论】:

    标签: ruby code-metrics


    【解决方案1】:

    您应该在实例化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(更好)。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多