Class: Yarder::Rack::Logger
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app, tags = nil) ⇒ Logger
constructor
A new instance of Logger.
- #tags(request) ⇒ Object
Constructor Details
#initialize(app, tags = nil) ⇒ Logger
Returns a new instance of Logger.
7 8 9 |
# File 'lib/yarder/rack/logger.rb', line 7 def initialize(app, = nil) @app, @tags = app, .presence 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 34 35 36 37 |
# File 'lib/yarder/rack/logger.rb', line 11 def call(env) t1 = Time.now request = ActionDispatch::Request.new(env) event = Yarder::Event.create Rails.logger, (request), true event['message'] = "#{request.request_method} #{request.filtered_path} for #{request.ip}" entry = (event.fields['rack'] ||= {}) entry['client_ip'] = request.ip entry['method'] = request.request_method entry['path'] = request.filtered_path entry['url'] = request.url Yarder.log_entries[Thread.current] = event status, headers, response = @app.call(env) [status, headers, response] ensure if event entry['status'] = status event.fields['duration']['total'] = (Time.now - t1)*1000 event.write(true) end Yarder.log_entries[Thread.current] = nil end |
#tags(request) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/yarder/rack/logger.rb', line 39 def (request) return unless @tags @tags.reduce([]) do |arr, tag| case tag when Symbol arr << {tag.to_s => request.send(tag) } when Proc arr << tag.call(request) else arr << tag end end end |