Class: RightSupport::Log::FilterLogger
- Defined in:
- lib/right_support/log/filter_logger.rb
Overview
A logger than encapsulates an underlying Logger object and filters log entries before they are passed to the underlying Logger. Can be used to for various log- processing tasks such as filtering sensitive data or tagging log lines with a context marker.
FilterLogger implements method_missing and respond_to? and proxies unknown method calls to its underlying logger; this allows it to be used as a decorator.
Direct Known Subclasses
Constant Summary collapse
- SEVERITY_TO_METHOD =
{ DEBUG => :debug, INFO => :info, WARN => :warn, ERROR => :error, FATAL => :fatal, }
Instance Method Summary collapse
-
#<<(msg) ⇒ Object
Proxies to the encapsulated Logger object.
-
#add(severity, message = nil, progname = nil, &block) ⇒ Object
Add a log line, filtering the severity and message before calling through to the underlying logger’s #add method.
-
#close ⇒ Object
Proxies to the encapsulated Logger object.
-
#debug(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
-
#debug? ⇒ Boolean
Proxies to the encapsulated Logger object.
-
#error(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
-
#error? ⇒ Boolean
Proxies to the encapsulated Logger object.
-
#fatal(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
-
#fatal? ⇒ Boolean
Proxies to the encapsulated Logger object.
-
#info(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
-
#info? ⇒ Boolean
Proxies to the encapsulated Logger object.
-
#initialize(actual_logger) ⇒ FilterLogger
constructor
Initialize a new instance of this class.
-
#level ⇒ Object
Proxies to the encapsulated Logger object.
-
#level=(new_level) ⇒ Object
Proxies to the encapsulated Logger object.
- #method_missing(meth, *args) ⇒ Object
- #respond_to?(meth) ⇒ Boolean
-
#warn(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
-
#warn? ⇒ Boolean
Proxies to the encapsulated Logger object.
Constructor Details
#initialize(actual_logger) ⇒ FilterLogger
Initialize a new instance of this class.
Parameters
- actual_logger(Logger)
-
The actual, underlying Logger object
48 49 50 |
# File 'lib/right_support/log/filter_logger.rb', line 48 def initialize(actual_logger) @actual_logger = actual_logger end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(meth, *args) ⇒ Object
52 53 54 55 |
# File 'lib/right_support/log/filter_logger.rb', line 52 def method_missing(meth, *args) return @actual_logger.__send__(meth, *args) if @actual_logger.respond_to?(meth) super end |
Instance Method Details
#<<(msg) ⇒ Object
Proxies to the encapsulated Logger object. See Logger#<< for info.
148 149 150 |
# File 'lib/right_support/log/filter_logger.rb', line 148 def <<(msg) @actual_logger << msg end |
#add(severity, message = nil, progname = nil, &block) ⇒ Object
Add a log line, filtering the severity and message before calling through to the underlying logger’s #add method.
Parameters
- severity(Integer)
-
one of the Logger severity constants
- message(String)
-
the message to log, or nil
- progname(String)
-
the program name, or nil
Block
If message == nil and a block is given, yields to the block in order to capture the log message. This matches the behavior of Logger, but ensures the severity and message are still filtered.
Return
the result of the underlying logger’s #add
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/right_support/log/filter_logger.rb', line 131 def add(severity, = nil, progname = nil, &block) severity ||= UNKNOWN return true if severity < level if .nil? if block_given? = yield else = progname end end severity, = filter(severity, ) return @actual_logger.add(severity, ) if end |
#close ⇒ Object
Proxies to the encapsulated Logger object. See Logger#close for info.
153 154 155 |
# File 'lib/right_support/log/filter_logger.rb', line 153 def close @actual_logger.close end |
#debug(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
See #info for more information.
65 66 67 68 69 70 |
# File 'lib/right_support/log/filter_logger.rb', line 65 def debug( = nil, &block) severity, = filter(DEBUG, ) meth = SEVERITY_TO_METHOD[severity] raise ArgumentError, "Filter emitted unknown severity #{severity.inspect}" unless meth @actual_logger.__send__(meth, , &block) end |
#debug? ⇒ Boolean
Proxies to the encapsulated Logger object. See Logger#debug? for info.
168 |
# File 'lib/right_support/log/filter_logger.rb', line 168 def debug?; @actual_logger.debug?; end |
#error(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
See #info for more information.
98 99 100 101 102 103 |
# File 'lib/right_support/log/filter_logger.rb', line 98 def error( = nil, &block) severity, = filter(ERROR, ) meth = SEVERITY_TO_METHOD[severity] raise ArgumentError, "Filter emitted unknown severity #{severity.inspect}" unless meth @actual_logger.__send__(meth, , &block) end |
#error? ⇒ Boolean
Proxies to the encapsulated Logger object. See Logger#error? for info.
177 |
# File 'lib/right_support/log/filter_logger.rb', line 177 def error?; @actual_logger.error?; end |
#fatal(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
See #info for more information.
109 110 111 112 113 114 |
# File 'lib/right_support/log/filter_logger.rb', line 109 def fatal( = nil, &block) severity, = filter(FATAL, ) meth = SEVERITY_TO_METHOD[severity] raise ArgumentError, "Filter emitted unknown severity #{severity.inspect}" unless meth @actual_logger.__send__(meth, , &block) end |
#fatal? ⇒ Boolean
Proxies to the encapsulated Logger object. See Logger#fatal? for info.
180 |
# File 'lib/right_support/log/filter_logger.rb', line 180 def fatal?; @actual_logger.fatal?; end |
#info(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
See #info for more information.
76 77 78 79 80 81 |
# File 'lib/right_support/log/filter_logger.rb', line 76 def info( = nil, &block) severity, = filter(INFO, ) meth = SEVERITY_TO_METHOD[severity] raise ArgumentError, "Filter emitted unknown severity #{severity.inspect}" unless meth @actual_logger.__send__(meth, , &block) end |
#info? ⇒ Boolean
Proxies to the encapsulated Logger object. See Logger#info? for info.
171 |
# File 'lib/right_support/log/filter_logger.rb', line 171 def info?; @actual_logger.info?; end |
#level ⇒ Object
Proxies to the encapsulated Logger object. See Logger#level for info.
158 159 160 |
# File 'lib/right_support/log/filter_logger.rb', line 158 def level @actual_logger.level end |
#level=(new_level) ⇒ Object
Proxies to the encapsulated Logger object. See Logger#level= for info.
163 164 165 |
# File 'lib/right_support/log/filter_logger.rb', line 163 def level=(new_level) @actual_logger.level = new_level end |
#respond_to?(meth) ⇒ Boolean
57 58 59 |
# File 'lib/right_support/log/filter_logger.rb', line 57 def respond_to?(meth) super(meth) || @actual_logger.respond_to?(meth) end |
#warn(message = nil, &block) ⇒ Object
Log a message, filtering the severity and/or message and dispatching to the corresponding severity-method of the underlying logger.
See #info for more information.
87 88 89 90 91 92 |
# File 'lib/right_support/log/filter_logger.rb', line 87 def warn( = nil, &block) severity, = filter(WARN, ) meth = SEVERITY_TO_METHOD[severity] raise ArgumentError, "Filter emitted unknown severity #{severity.inspect}" unless meth @actual_logger.__send__(meth, , &block) end |
#warn? ⇒ Boolean
Proxies to the encapsulated Logger object. See Logger#warn? for info.
174 |
# File 'lib/right_support/log/filter_logger.rb', line 174 def warn?; @actual_logger.warn?; end |