module EasyLog
Constants
- VERSION
Public Class Methods
included(cls)
click to toggle source
# File lib/easy_log.rb, line 7 def self.included cls cls.extend EasyLog end
logger()
click to toggle source
# File lib/easy_log.rb, line 19 def self.logger @logger ||= (defined?(Rails) ? Rails.logger : Logger.new(STDOUT)) end
set_logger(logger)
click to toggle source
# File lib/easy_log.rb, line 11 def self.set_logger(logger) if logger.respond_to? :info @logger = logger else fail InvalidLoggerError, 'Logger must respond to info!' end end
Public Instance Methods
log(*args)
click to toggle source
# File lib/easy_log.rb, line 23 def log(*args) @current_binding = binding.of_caller(1) EasyLog.logger.info msg(*args) end
msg(*args)
click to toggle source
# File lib/easy_log.rb, line 28 def msg(*args) @current_binding = binding.of_caller(1) unless @current_binding types = [:start, :finish, :success, :info, :warning, :error] requires_message = { start: false, finish: false, success: false, info: true, warning: true, error: true } type = args.shift if args.first.is_a?(Symbol) && types.include?(args.first) message = args.shift if args.first.is_a?(String) additional_params = args.shift if requires_message[type] && !message fail(ArgumentError, "message required for #{type}") end display_type = "#{type.to_s.upcase}#{message ? ': ' : '!'}" if type param_string = build_params_string( instance_params, method_params, additional_params ) "#{class_method_string}: #{display_type}#{message}#{param_string}" end
Private Instance Methods
build_params_string(instance, method, additional)
click to toggle source
build a param string from the method method_params
and any additional_params
# File lib/easy_log.rb, line 87 def build_params_string(instance, method, additional) full_hash = instance.to_h.merge(method.to_h).merge(additional.to_h) params_string = full_hash.inject('') do |a, (k, v)| a += " #{k}: #{v}" end " w/#{params_string}" unless params_string.nil? || params_string == '' end
class_method_string()
click to toggle source
gets the class and method name as a string
# File lib/easy_log.rb, line 61 def class_method_string full_str = @current_binding.eval('method(__method__).to_s') full_str.sub('#<Method: ', '').sub(/>$/, '') end
instance_params()
click to toggle source
# File lib/easy_log.rb, line 76 def instance_params @current_binding.eval('instance_variables').inject({}) do |a, param| unless [:@current_binding, :@logger].include?(param) value = @current_binding.eval(param.to_s) a[param] = value if value end a end end
method_params()
click to toggle source
retrieves the method params from the current binding
# File lib/easy_log.rb, line 67 def method_params params_method = 'method(__method__).parameters' @current_binding.eval(params_method).inject({}) do |a, param| value = @current_binding.eval(param.last.to_s) a[param.last.to_s] = value if value a end end