Sha256: 8d973c10585db382cd1fb30a3d9591a9f71893ee6d0e77516e8c9d15b4c7e873

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

module Log4rExceptionable
    
  # Configuration for the failure backends that log exceptions with log4r
  #
  class Configuration

    class << self
      # required - default loggers used if source logger not available
      attr_accessor :rack_failure_logger, :resque_failure_logger
      # Allows one to force use of default loggers by setting to false
      attr_accessor :use_source_logger
      # The level to log exceptions
      attr_accessor :log_level
      # whitelist of context keys (e.g. keys in rack env) to include in log4r context when logging
      attr_accessor :context_inclusions
      # blacklist of context keys (e.g. keys in rack env) to exclude in log4r context when logging
      attr_accessor :context_exclusions
    end

    # default values
    self.use_source_logger = true
    self.log_level = :fatal

    def self.configure
      yield self

      if ! self.rack_failure_logger && ! self.resque_failure_logger
        raise "log4r-exceptionable requires a rack_failure_logger or resque_failure_logger"
      end

      if self.rack_failure_logger
        self.set_logger(:rack_failure_logger)
      end
      
      if self.resque_failure_logger
        self.set_logger(:resque_failure_logger)
      end
      
      self.context_inclusions = Set.new(self.context_inclusions) if self.context_inclusions
      self.context_exclusions = Set.new(self.context_exclusions) if self.context_exclusions

      raise "Invalid log level: #{self.log_level}" unless Log4r::LNAMES.include?(self.log_level.to_s.upcase)
      self.log_level = self.log_level.to_sym
    end

    def self.set_logger(accessor)
      if ! self.send(accessor).instance_of?(Log4r::Logger)
        name = self.send(accessor).to_s
        self.send("#{accessor}=", Log4r::Logger[name] || Log4r::Logger.new(name))
      end
    end
    
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
log4r-exceptionable-0.7.0 lib/log4r-exceptionable/configuration.rb