Class: Auth::Sanitizer::SanitizedLogger
- Inherits:
-
Object
- Object
- Auth::Sanitizer::SanitizedLogger
- Defined in:
- lib/auth/sanitizer/sanitized_logger.rb
Overview
Logger wrapper that redacts sensitive values from debug output before delegating to the
underlying logger instance.
This class is intentionally narrow in scope: it only sanitizes string messages emitted
through the logging path and leaves request/response behavior unchanged.
The underlying {ThingFilter} is initialized once when the logger wrapper is
created, so later config changes do not alter the behavior of existing
logger instances.
Instance Method Summary collapse
-
#<<(message) ⇒ Object
Append a message to the underlying logger after sanitization.
-
#add(severity, message = nil, progname = nil) ⇒ Object
Add a log entry after sanitizing any string payloads.
-
#close ⇒ void
Close the underlying logger if supported.
-
#debug(progname = nil, &block) ⇒ Object
Log a debug message after sanitization.
-
#error(progname = nil, &block) ⇒ Object
Log an error message after sanitization.
-
#fatal(progname = nil, &block) ⇒ Object
Log a fatal message after sanitization.
-
#formatter ⇒ Object?
Access the formatter of the underlying logger if supported.
-
#formatter=(formatter) ⇒ void
Set the formatter of the underlying logger if supported.
-
#info(progname = nil, &block) ⇒ Object
Log an info message after sanitization.
-
#initialize(logger, filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label) ⇒ SanitizedLogger
constructor
Create a new sanitized logger wrapper.
-
#level ⇒ Object?
Access the logger level if supported.
-
#level=(level) ⇒ void
Set the logger level if supported.
-
#method_missing(method_name, *args) { ... } ⇒ Object
Delegate unsupported methods to the wrapped logger.
-
#progname ⇒ Object?
Access the logger progname if supported.
-
#progname=(progname) ⇒ void
Set the logger progname if supported.
-
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
Report support for methods provided by the wrapped logger.
-
#unknown(progname = nil, &block) ⇒ Object
Log an unknown-severity message after sanitization.
-
#warn(progname = nil, &block) ⇒ Object
Log a warning message after sanitization.
Constructor Details
#initialize(logger, filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label) ⇒ SanitizedLogger
Create a new sanitized logger wrapper.
25 26 27 28 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 25 def initialize(logger, filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label) @logger = logger @value_sanitizer = ValueSanitizer.new(filtered_keys: filtered_keys, label: label) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) { ... } ⇒ Object
Delegate unsupported methods to the wrapped logger.
174 175 176 177 178 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 174 def method_missing(method_name, *args, &block) return super unless @logger.respond_to?(method_name) @logger.public_send(method_name, *args, &block) end |
Instance Method Details
#<<(message) ⇒ Object
Append a message to the underlying logger after sanitization.
49 50 51 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 49 def <<() @logger << sanitize() end |
#add(severity, message = nil, progname = nil) ⇒ Object
Add a log entry after sanitizing any string payloads.
37 38 39 40 41 42 43 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 37 def add(severity, = nil, progname = nil) if block_given? @logger.add(severity, sanitize(), sanitize(progname)) { sanitize(yield) } else @logger.add(severity, sanitize(), sanitize(progname)) end end |
#close ⇒ void
This method returns an undefined value.
Close the underlying logger if supported.
110 111 112 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 110 def close @logger.close if @logger.respond_to?(:close) end |
#debug(progname = nil, &block) ⇒ Object
Log a debug message after sanitization.
58 59 60 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 58 def debug(progname = nil, &block) log(:debug, progname, &block) end |
#error(progname = nil, &block) ⇒ Object
Log an error message after sanitization.
85 86 87 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 85 def error(progname = nil, &block) log(:error, progname, &block) end |
#fatal(progname = nil, &block) ⇒ Object
Log a fatal message after sanitization.
94 95 96 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 94 def fatal(progname = nil, &block) log(:fatal, progname, &block) end |
#formatter ⇒ Object?
Access the formatter of the underlying logger if supported.
117 118 119 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 117 def formatter @logger.formatter if @logger.respond_to?(:formatter) end |
#formatter=(formatter) ⇒ void
This method returns an undefined value.
Set the formatter of the underlying logger if supported.
125 126 127 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 125 def formatter=(formatter) @logger.formatter = formatter if @logger.respond_to?(:formatter=) end |
#info(progname = nil, &block) ⇒ Object
Log an info message after sanitization.
67 68 69 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 67 def info(progname = nil, &block) log(:info, progname, &block) end |
#level ⇒ Object?
Access the logger level if supported.
132 133 134 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 132 def level @logger.level if @logger.respond_to?(:level) end |
#level=(level) ⇒ void
This method returns an undefined value.
Set the logger level if supported.
140 141 142 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 140 def level=(level) @logger.level = level if @logger.respond_to?(:level=) end |
#progname ⇒ Object?
Access the logger progname if supported.
147 148 149 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 147 def progname @logger.progname if @logger.respond_to?(:progname) end |
#progname=(progname) ⇒ void
This method returns an undefined value.
Set the logger progname if supported.
155 156 157 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 155 def progname=(progname) @logger.progname = progname if @logger.respond_to?(:progname=) end |
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
Report support for methods provided by the wrapped logger.
164 165 166 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 164 def respond_to_missing?(method_name, include_private = false) @logger.respond_to?(method_name, include_private) || super end |
#unknown(progname = nil, &block) ⇒ Object
Log an unknown-severity message after sanitization.
103 104 105 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 103 def unknown(progname = nil, &block) log(:unknown, progname, &block) end |
#warn(progname = nil, &block) ⇒ Object
Log a warning message after sanitization.
76 77 78 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 76 def warn(progname = nil, &block) log(:warn, progname, &block) end |