class Redis::Client
def logging(commands)
def logging(commands) return yield unless @logger&.debug? begin commands.each do |name, *args| logged_args = args.map do |a| if a.respond_to?(:inspect) then a.inspect elsif a.respond_to?(:to_s) then a.to_s else # handle poorly-behaved descendants of BasicObject klass = a.instance_exec { (class << self; self end).superclass } "\#<#{klass}:#{a.__id__}>" end end @logger.debug("[Redis] command=#{name.to_s.upcase} args=#{logged_args.join(' ')}") end t1 = Time.now yield ensure @logger.debug("[Redis] call_time=%0.2f ms" % ((Time.now - t1) * 1000)) if t1 end end