Sha256: 9e6ae8863de4221bac66a8e5fd2973a56213ac5645938b934bf4874419e7cb9e

Contents?: true

Size: 797 Bytes

Versions: 2

Compression:

Stored size: 797 Bytes

Contents

require "benchmark"

module GlassOctopus
  module Middleware
    class CommonLogger
      FORMAT = "Processed message. topic=%s, partition=%d, key=%s, runtime=%fms".freeze

      def initialize(app, logger=nil, log_level=:info)
        @app = app
        @logger = logger
        @log_level = log_level
      end

      def call(ctx)
        log(ctx) { @app.call(ctx) }
      end

      private

      def log(ctx)
        logger = @logger || ctx.logger

        runtime = Benchmark.realtime { yield }
        runtime *= 1000 # Convert to milliseconds

        logger.send(@log_level) { format_message(ctx, runtime) }
      end

      def format_message(ctx, runtime)
        format(FORMAT,
          ctx.message.topic, ctx.message.partition, ctx.message.key, runtime)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
glass_octopus-2.1.0 lib/glass_octopus/middleware/common_logger.rb
glass_octopus-2.0.0 lib/glass_octopus/middleware/common_logger.rb