class MongodbLogger::RackMiddleware

Public Class Methods

log_attributes_filter=(filter) click to toggle source
# File lib/mongodb_logger/rack_middleware.rb, line 6
def self.log_attributes_filter=(filter)
  @@log_attributes_filter = filter
end
new(app) click to toggle source
# File lib/mongodb_logger/rack_middleware.rb, line 10
def initialize(app)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/mongodb_logger/rack_middleware.rb, line 18
def call(env)
  request = ::Rack::Request.new env
  path = request.path.split('/')
  log_attrs = {
    method:     request.request_method,
    action:     (path[2..-1] || []).join('/'),
    controller: path[1],
    path:       request.path,
    url:        request.url,
    params:     request.params,
    ip:         request_ip(request)
  }

  log_attrs = @@log_attributes_filter.call(log_attrs) if @@log_attributes_filter

  logger.mongoize(log_attrs) do
    return @app.call(env)
  end
end
request_ip(request) click to toggle source
# File lib/mongodb_logger/rack_middleware.rb, line 14
def request_ip(request)
  return request.env["REMOTE_ADDR"]
end

Private Instance Methods

logger() click to toggle source
# File lib/mongodb_logger/rack_middleware.rb, line 40
def logger
  @logger ||= if defined?(Rails)
    Rails.logger
  elsif defined?(LOGGER)
    LOGGER
  else
    MongodbLogger::Logger.new
  end
end