module CloudWatchLogger::Client::InstanceMethods

Public Instance Methods

default_log_stream_name() click to toggle source
# File lib/cloudwatchlogger/client.rb, line 84
def default_log_stream_name
  uuid = UUID.new
  @log_stream_name ||= "#{Socket.gethostname}-#{uuid.generate}"
end
epoch_from(datetime) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 89
def epoch_from(datetime)
  (datetime.utc.to_f.round(3) * 1000).to_i
end
formatter(format=nil) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 36
def formatter(format=nil)
  proc do |severity, datetime, progname, msg|
    processid = Process.pid
    if format == :json && msg.is_a?(Hash)
      message = MultiJson.dump(msg.merge(severity: severity,
                               datetime: datetime,
                               progname: progname,
                               pid: processid))
    else
      message = "#{datetime} "
      message << massage_message(msg, severity, processid)
    end

    {
      message:    message,
      epoch_time: epoch_from(datetime)
    }
  end
end
masher(hash, prefix = nil) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 21
def masher(hash, prefix = nil)
  hash.map do |v|
    if v[1].is_a?(Hash)
      masher(v[1], masherize_key(prefix, v[0]))
    else
      "#{masherize_key(prefix, v[0])}=" << case v[1]
                                           when Symbol
                                             v[1].to_s
                                           else
                                             v[1].inspect
                                           end
    end
  end.join(', ')
end
masherize_key(prefix, key) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 17
def masherize_key(prefix, key)
  [prefix, key.to_s].compact.join('.')
end
massage_message(incoming_message, severity, processid) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 56
def massage_message(incoming_message, severity, processid)
  outgoing_message = ''

  outgoing_message << "pid=#{processid}, thread=#{Thread.current.object_id}, severity=#{severity}, "

  outgoing_message << case incoming_message
                      when Hash
                        masher(incoming_message)
                      when String
                        incoming_message
                      else
                        incoming_message.inspect
                      end
  outgoing_message
end
setup_credentials(credentials) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 72
def setup_credentials(credentials)
  @credentials = credentials
end
setup_log_group_name(name) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 76
def setup_log_group_name(name)
  @log_group_name = name
end
setup_log_stream_name(name) click to toggle source
# File lib/cloudwatchlogger/client.rb, line 80
def setup_log_stream_name(name)
  @log_stream_name = name || default_log_stream_name
end