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