class Attune::JsonLogger

Public Class Methods

new(app, logger=nil) click to toggle source
Calls superclass method
# File lib/attune/json_logger.rb, line 7
def initialize app, logger=nil
  super(app)
  @logger = logger || Logger.new(STDERR)
end

Public Instance Methods

call(env) click to toggle source
# File lib/attune/json_logger.rb, line 11
def call(env)
  time = (Time.now.to_f * 1000).to_i
  response = nil
  elapsed_time = Benchmark.realtime do
    response = @app.call(env)
  end
  log(
    ref: nil,
    v: 1,
    protocol: env[:url].scheme,
    host: env[:url].host,
    path: env[:url].path,
    t: time,
    r_id: SecureRandom.uuid,
    status: response.status,
    ua: env[:request_headers]['User-Agent'],
    method: env[:method],
    perf: {
      total: elapsed_time * 1000
    }
  )
  response
end
log(data) click to toggle source
# File lib/attune/json_logger.rb, line 34
def log(data)
  @logger.info JSON.dump(data)
end