Class: Semlogger::Rack

Inherits:
Rails::Rack::Logger
  • Object
show all
Defined in:
lib/semlogger/rack.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, tags = nil, data = nil) ⇒ Rack

Returns a new instance of Rack.

[View source]

2
3
4
5
# File 'lib/semlogger/rack.rb', line 2

def initialize app, tags = nil, data = nil
  super app, tags
  @data = data
end

Instance Method Details

#call(env) ⇒ Object

[View source]

15
16
17
18
19
20
21
# File 'lib/semlogger/rack.rb', line 15

def call env
  if @data
    Rails.logger.data( compute_data( env)) { super env }
  else
    super env
  end
end

#call_app(request, env) ⇒ Object

[View source]

7
8
9
10
11
12
13
# File 'lib/semlogger/rack.rb', line 7

def call_app request, env
  path = request.filtered_path
  Semlogger.custom( :connection, request.ip, Thread.current.object_id, request.request_method, path).info
  @app.call env
ensure
  ActiveSupport::LogSubscriber.flush_all!
end

#compute_data(env) ⇒ Object

[View source]

23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/semlogger/rack.rb', line 23

def compute_data env
  request = ActionDispatch::Request.new env

  data = @data.dup
  data.each do |k, v|
    case v
    when Proc
      data[k] = v.call request
    when Symbol
      data[k] = request.send v
    end
  end
end