Class: Attune::JsonLogger

Inherits:
Faraday::Middleware
  • Object
show all
Defined in:
lib/attune/json_logger.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, logger = nil) ⇒ JsonLogger

Returns a new instance of JsonLogger.



7
8
9
10
# File 'lib/attune/json_logger.rb', line 7

def initialize app, logger=nil
  super(app)
  @logger = logger || Logger.new(STDERR)
end

Instance Method Details

#call(env) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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) ⇒ Object



34
35
36
# File 'lib/attune/json_logger.rb', line 34

def log(data)
  @logger.info JSON.dump(data)
end