Sha256: a0b55a789d95e05b187d067f974f8d475838fc8bb71250c4755e1be16e2e70b8

Contents?: true

Size: 1.77 KB

Versions: 21

Compression:

Stored size: 1.77 KB

Contents

# Call EffectiveLog.info or EffectiveLog.success  EffectiveLog.error

class EffectiveLogger
  def self.log(message, status = EffectiveLogging.statuses.first, options = {})
    return if EffectiveLogging.supressed?

    options = Hash(options).delete_if { |k, v| v.blank? }

    if options[:user].present? && !options[:user].kind_of?(User)
      raise ArgumentError.new('Log.log :user => ... argument must be a User object')
    end

    if options[:parent].present? && !options[:parent].kind_of?(Effective::Log)
      raise ArgumentError.new('Log.log :parent => ... argument must be an Effective::Log object')
    end

    if options[:associated].present? && !options[:associated].kind_of?(ActiveRecord::Base)
      raise ArgumentError.new('Log.log :associated => ... argument must be an ActiveRecord::Base object')
    end

    if options[:request].present? && options[:request].respond_to?(:referrer)
      request = options.delete(:request)

      options[:ip] ||= request.ip
      options[:referrer] ||= request.referrer
      options[:user_agent] ||= request.user_agent
    end

    log = Effective::Log.new(
      message: message,
      status: status,
      user_id: options.delete(:user_id),
      user: options.delete(:user),
      parent: options.delete(:parent),
      associated: options.delete(:associated),
      associated_to_s: options.delete(:associated_to_s),
      details: options
    )

    if log.associated.present?
      log.associated_to_s ||= log.associated.to_s
    end

    log.save!

    log
  end

  # Dynamically add logging methods based on the defined statuses
  # EffectiveLogging.info 'my message'
  (EffectiveLogging.statuses || []).each do |status|
    self.singleton_class.send(:define_method, status) { |message, options={}| log(message, status, options) }
  end

end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
effective_logging-3.0.13 app/models/effective_logger.rb
effective_logging-3.0.12 app/models/effective_logger.rb
effective_logging-3.0.11 app/models/effective_logger.rb
effective_logging-3.0.10 app/models/effective_logger.rb
effective_logging-3.0.9 app/models/effective_logger.rb
effective_logging-3.0.8 app/models/effective_logger.rb
effective_logging-3.0.7 app/models/effective_logger.rb
effective_logging-3.0.6 app/models/effective_logger.rb
effective_logging-3.0.5 app/models/effective_logger.rb
effective_logging-3.0.4 app/models/effective_logger.rb
effective_logging-3.0.3 app/models/effective_logger.rb
effective_logging-3.0.2 app/models/effective_logger.rb
effective_logging-3.0.1 app/models/effective_logger.rb
effective_logging-3.0.0 app/models/effective_logger.rb
effective_logging-2.1.2 app/models/effective_logger.rb
effective_logging-2.1.1 app/models/effective_logger.rb
effective_logging-2.1.0 app/models/effective_logger.rb
effective_logging-2.0.8 app/models/effective_logger.rb
effective_logging-2.0.7 app/models/effective_logger.rb
effective_logging-2.0.6 app/models/effective_logger.rb