Sha256: c1b872ec4ba0d93f0c13860383e055c8adc9c0b03dd95070d12a8184f865273b
Contents?: true
Size: 1.31 KB
Versions: 2
Compression:
Stored size: 1.31 KB
Contents
# Provides a way of wrapping another broadcaster with logging module Wisper module Broadcasters class LoggerBroadcaster def initialize(logger, broadcaster) @logger = logger @broadcaster = broadcaster end def broadcast(listener, publisher, event, *args, **kwargs) @logger.info("[WISPER] #{name(publisher)} published #{event} to #{name(listener)} with #{args_info(args)} and #{kwargs_info(kwargs)}") @broadcaster.broadcast(listener, publisher, event, *args, **kwargs) end private def name(object) id_method = %w(id uuid key object_id).find do |method_name| object.respond_to?(method_name) && object.method(method_name).arity <= 0 end id = object.send(id_method) class_name = object.class == Class ? object.name : object.class.name "#{class_name}##{id}" end def args_info(args) return 'no arguments' if args.empty? args.map do |arg| arg_string = name(arg) arg_string += ": #{arg.inspect}" if [Numeric, Array, Hash, String].any? {|klass| arg.is_a?(klass) } arg_string end.join(', ') end def kwargs_info(kwargs) kwargs.empty? ? 'no keyword arguments' : "keyword arguments #{kwargs.inspect}" end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
wisper-3.0.0.rc1 | lib/wisper/broadcasters/logger_broadcaster.rb |
wisper-compat-4.0.0 | lib/wisper/broadcasters/logger_broadcaster.rb |