class Aws::Embedded::Metrics::Logger

Public Class Methods

new(sink = Config.config.sink) click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 6
def initialize(sink = Config.config.sink)
  @sink = sink
  @namespace = Config.config.namespace
  @dimensions = Concurrent::Array.new
  @metrics = Concurrent::Array.new
  @properties = Concurrent::Hash.new
end

Public Instance Methods

benchmark() { || ... } click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 24
def benchmark
  value = nil
  seconds = Benchmark.realtime { value = yield }
  milliseconds = (seconds * 1000).to_i
  [value, milliseconds]
end
empty?() click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 48
def empty?
  [@dimensions, @metrics, @properties].all?(&:empty?)
end
flush() click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 20
def flush
  @sink.accept(message) unless empty?
end
message() click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 52
def message
  {
    '_aws' => {
      'Timestamp' => timestamp,
      'CloudWatchMetrics' => [
        {
          'Namespace' => @namespace,
          'Dimensions' => [@dimensions.map(&:keys).flatten],
          'Metrics' => @metrics
        }
      ]
    }
  }.tap do |m|
    @dimensions.each { |dim| m.merge!(dim) }
    m.merge!(@properties)
  end
end
metrics() { |self| ... } click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 14
def metrics
  yield(self)
ensure
  flush
end
put_dimension(name, value) click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 31
def put_dimension(name, value)
  @dimensions << { name => value }
  self
end
put_metric(name, value, unit = nil) click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 36
def put_metric(name, value, unit = nil)
  @metrics << { 'Name' => name }.tap do |m|
    m['Unit'] = unit if unit
  end
  set_property name, value
end
set_property(name, value) click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 43
def set_property(name, value)
  @properties[name] = value
  self
end
timestamp() click to toggle source
# File lib/aws-embedded-metrics-customink/logger.rb, line 70
def timestamp
  Time.now.strftime('%s%3N').to_i
end