Class: Philiprehberger::LogFilter::Wrapper

Inherits:
Object
  • Object
show all
Defined in:
lib/philiprehberger/log_filter/wrapper.rb

Overview

Wraps a Ruby Logger (or any object responding to the standard log level methods) and applies a Filter to every message before forwarding.

Constant Summary collapse

LOG_LEVELS =
%i[debug info warn error fatal].freeze

Instance Method Summary collapse

Constructor Details

#initialize(logger, filter) ⇒ Wrapper

Returns a new instance of Wrapper.

Parameters:

  • logger (Logger)

    the underlying logger to delegate to

  • filter (Filter)

    the filter to apply to messages



13
14
15
16
# File 'lib/philiprehberger/log_filter/wrapper.rb', line 13

def initialize(logger, filter)
  @logger = logger
  @filter = filter
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name) ⇒ Object

Delegate unknown methods to the underlying logger.



52
53
54
55
56
57
58
# File 'lib/philiprehberger/log_filter/wrapper.rb', line 52

def method_missing(method_name, ...)
  if @logger.respond_to?(method_name)
    @logger.public_send(method_name, ...)
  else
    super
  end
end

Instance Method Details

#closevoid

This method returns an undefined value.

Close the underlying logger.



47
48
49
# File 'lib/philiprehberger/log_filter/wrapper.rb', line 47

def close
  @logger.close
end

#levelInteger

Returns the current log level.

Returns:

  • (Integer)

    the current log level



34
35
36
# File 'lib/philiprehberger/log_filter/wrapper.rb', line 34

def level
  @logger.level
end

#level=(new_level) ⇒ void

This method returns an undefined value.

Parameters:

  • new_level (Integer, Symbol)

    the new log level



40
41
42
# File 'lib/philiprehberger/log_filter/wrapper.rb', line 40

def level=(new_level)
  @logger.level = new_level
end

#respond_to_missing?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


61
62
63
# File 'lib/philiprehberger/log_filter/wrapper.rb', line 61

def respond_to_missing?(method_name, include_private = false)
  @logger.respond_to?(method_name, include_private) || super
end