Class: Traxor::Metric::Line

Inherits:
Object
  • Object
show all
Defined in:
lib/traxor/metric/line.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLine

Returns a new instance of Line.



14
15
16
17
18
19
# File 'lib/traxor/metric/line.rb', line 14

def initialize
  @counts = []
  @measures = []
  @samples = []
  @tags = {}
end

Class Method Details

.record {|line| ... } ⇒ Object

Yields:

  • (line)


8
9
10
11
12
# File 'lib/traxor/metric/line.rb', line 8

def self.record
  line = new
  yield line
  line.flush
end

Instance Method Details

#count(name, value, tags = {}) ⇒ Object



21
22
23
24
# File 'lib/traxor/metric/line.rb', line 21

def count(name, value, tags = {})
  @counts << [name, value]
  @tags.merge!(tags)
end

#flushObject



36
37
38
39
40
41
42
43
44
# File 'lib/traxor/metric/line.rb', line 36

def flush
  line = ''

  @counts.each { |name, value| line += " count##{name}=#{value}" }
  @measures.each { |name, value| line += " measure##{name}=#{value}" }
  @samples.each { |name, value| line += " sample##{name}=#{value}" }

  log("#{line} #{tag_string(@tags)}")
end

#log(string) ⇒ Object



56
57
58
59
60
# File 'lib/traxor/metric/line.rb', line 56

def log(string)
  return unless Traxor.enabled?

  logger.info(normalize_values(string))
end

#loggerObject



62
63
64
# File 'lib/traxor/metric/line.rb', line 62

def logger
  Traxor.logger
end

#measure(name, value, tags = {}) ⇒ Object



26
27
28
29
# File 'lib/traxor/metric/line.rb', line 26

def measure(name, value, tags = {})
  @measures << [name, value]
  @tags.merge!(tags)
end

#normalize_values(value) ⇒ Object



52
53
54
# File 'lib/traxor/metric/line.rb', line 52

def normalize_values(value)
  value.to_s.gsub(/::/, '.').underscore.strip
end

#sample(name, value, tags = {}) ⇒ Object



31
32
33
34
# File 'lib/traxor/metric/line.rb', line 31

def sample(name, value, tags = {})
  @samples << [name, value]
  @tags.merge!(tags)
end

#tag_string(tags) ⇒ Object



46
47
48
49
50
# File 'lib/traxor/metric/line.rb', line 46

def tag_string(tags)
  Hash(tags).merge(Traxor::Tags.all).map do |tag_name, tag_value|
    "tag##{tag_name}=#{tag_value}"
  end.join(' ')
end