Sha256: 74c9013257d070b31c94eaa203e4ce6e387d51015f070481bb9eabd26ba119b1

Contents?: true

Size: 1.03 KB

Versions: 15

Compression:

Stored size: 1.03 KB

Contents

module Locomotive
  module API
    module Middlewares

      class LoggerMiddleware

        def initialize(app)
          @app = app
        end

        def call(env)
          @app.call(env).tap do |response|
            log_message(response, env)
          end
        end

        private

        def log_message(response, env)
          message = payload(response, env).map { |p| "#{p.first}=\"#{p.last}\"" }.join(' ')

          Rails.logger.info(message)
        end

        def payload(response, env)
          params = env['api.endpoint'].params.to_hash
          params.delete_if { |k, _| %w(route_info format).include?(k) }

          [
            [:service,    'api.request'],
            [:method,     env['REQUEST_METHOD']],
            [:endpoint,   env['PATH_INFO']],
            [:params,     params.inspect],
            [:headers,    env.select { |k, _| k.is_a?(String) && k.start_with?('HTTP_X') }],
            [:status,     response[0]],
            [:timestamp,  Time.zone.now]
          ]
        end

      end

    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
locomotivecms-4.2.0.alpha2 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.2.0.alpha1 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.1.1 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.1.0 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.1.0.rc1 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.3 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.2 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.1 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.0 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.0.rc0 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.0.alpha3 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-3.4.1 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.0.alpha2 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-4.0.0.alpha1 app/api/locomotive/api/middlewares/logger_middleware.rb
locomotivecms-3.4.0 app/api/locomotive/api/middlewares/logger_middleware.rb