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.
26 27 28 29 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 26 def initialize(logger, filtered_keys: Auth::Sanitizer.default_filtered_keys, label: Auth::Sanitizer.filtered_label) @logger = logger @thing_filter = ThingFilter.new(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.
175 176 177 178 179 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 175 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.
50 51 52 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 50 def <<() @logger << sanitize() end |
#add(severity, message = nil, progname = nil) ⇒ Object
Add a log entry after sanitizing any string payloads.
38 39 40 41 42 43 44 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 38 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.
111 112 113 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 111 def close @logger.close if @logger.respond_to?(:close) end |
#debug(progname = nil, &block) ⇒ Object
Log a debug message after sanitization.
59 60 61 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 59 def debug(progname = nil, &block) log(:debug, progname, &block) end |
#error(progname = nil, &block) ⇒ Object
Log an error message after sanitization.
86 87 88 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 86 def error(progname = nil, &block) log(:error, progname, &block) end |
#fatal(progname = nil, &block) ⇒ Object
Log a fatal message after sanitization.
95 96 97 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 95 def fatal(progname = nil, &block) log(:fatal, progname, &block) end |
#formatter ⇒ Object?
Access the formatter of the underlying logger if supported.
118 119 120 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 118 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.
126 127 128 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 126 def formatter=(formatter) @logger.formatter = formatter if @logger.respond_to?(:formatter=) end |
#info(progname = nil, &block) ⇒ Object
Log an info message after sanitization.
68 69 70 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 68 def info(progname = nil, &block) log(:info, progname, &block) end |
#level ⇒ Object?
Access the logger level if supported.
133 134 135 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 133 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.
141 142 143 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 141 def level=(level) @logger.level = level if @logger.respond_to?(:level=) end |
#progname ⇒ Object?
Access the logger progname if supported.
148 149 150 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 148 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.
156 157 158 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 156 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.
165 166 167 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 165 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.
104 105 106 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 104 def unknown(progname = nil, &block) log(:unknown, progname, &block) end |
#warn(progname = nil, &block) ⇒ Object
Log a warning message after sanitization.
77 78 79 |
# File 'lib/auth/sanitizer/sanitized_logger.rb', line 77 def warn(progname = nil, &block) log(:warn, progname, &block) end |