Sha256: 943a82f4c35223e7c8fcc14475065821d86b921aa0f059106ee852702ce88db9

Contents?: true

Size: 722 Bytes

Versions: 1

Compression:

Stored size: 722 Bytes

Contents

module Semlogr
  module Rack
    class RequestLogger
      def initialize(app, logger = nil)
        @app = app
        @logger = logger
      end

      def call(env)
        start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
        status, headers, body = @app.call(env)
        finish = Process.clock_gettime(Process::CLOCK_MONOTONIC)

        logger.info(
          'HTTP {method} {path} - {status} ({duration}s)',
          method: env['REQUEST_METHOD'],
          path: env['REQUEST_URI'],
          status: status,
          duration: (finish - start).round(4)
        )

        [status, headers, body]
      end

      private

      def logger
        @logger || Semlogr.logger
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
semlogr-rack-0.1.0 lib/semlogr/rack/request_logger.rb