Class: Counters::File

Inherits:
Base
  • Object
show all
Defined in:
lib/counters/file.rb

Instance Attribute Summary

Attributes inherited from Base

#namespace

Instance Method Summary collapse

Methods inherited from Base

#hit, #latency, #magnitude, #ping

Constructor Details

#initialize(path_or_io_or_logger, options = {}) ⇒ File

Returns a new instance of File.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/counters/file.rb', line 5

def initialize(path_or_io_or_logger, options={})
  super(options)

  @logger = if path_or_io_or_logger.kind_of?(Logger) || path_or_io_or_logger.respond_to?(:add) then
              path_or_io_or_logger

            elsif path_or_io_or_logger.respond_to?(:to_str) then
              # path to something
              raise ArgumentError, "Counters::File expects a path with a non-empty name (or a Logger, IO instance); received: #{path_or_io_or_logger.inspect}" if path_or_io_or_logger.to_str.empty?

              logger = Logger.new(path_or_io_or_logger)
              logger.formatter = lambda {|severity, datetime, progname, msg| "#{datetime.strftime("%Y-%m-%dT%H:%M:%S.%N")} - #{msg}\n"}
              logger

            elsif path_or_io_or_logger.respond_to?(:<<) then
              # IO instance
              logger = Logger.new(path_or_io_or_logger)
              logger.formatter = lambda {|severity, datetime, progname, msg| "#{datetime.strftime("%Y-%m-%dT%H:%M:%S.%N")} - #{msg}\n"}
              logger

            else
              raise ArgumentError, "Counters::File expects an object which is either a Logger or respond to #<<, received a #{path_or_io_or_logger.class}"
            end
end

Instance Method Details

#record_hit(key, increment) ⇒ Object



30
31
32
# File 'lib/counters/file.rb', line 30

def record_hit(key, increment)
  @logger.info "hit: #{key}#{ increment == 1 ? "" : ": #{increment}"}"
end

#record_latency(key, time_in_seconds = nil) ⇒ Object



38
39
40
# File 'lib/counters/file.rb', line 38

def record_latency(key, time_in_seconds=nil)
  @logger.info "latency: #{key} #{time_in_seconds}s"
end

#record_magnitude(key, magnitude) ⇒ Object



34
35
36
# File 'lib/counters/file.rb', line 34

def record_magnitude(key, magnitude)
  @logger.info "magnitude: #{key} #{magnitude}"
end

#record_ping(key) ⇒ Object



42
43
44
# File 'lib/counters/file.rb', line 42

def record_ping(key)
  @logger.info "ping: #{key}"
end