Class: RedactingLogger
- Inherits:
-
Logger
- Object
- Logger
- RedactingLogger
- Defined in:
- lib/redacting_logger.rb
Overview
RedactingLogger is a custom logger that extends the standard Logger class. It redacts specified patterns in the log messages.
Instance Method Summary collapse
-
#add(severity, message = nil, progname = nil) ⇒ Object
Adds a message to the log.
-
#initialize(logdev = $stdout, shift_age = 0, shift_size = 1_048_576, redact_patterns: [], redacted_msg: "[REDACTED]", use_default_patterns: true, **kwargs) ⇒ RedactingLogger
constructor
Initializes a new instance of the RedactingLogger class.
Constructor Details
#initialize(logdev = $stdout, shift_age = 0, shift_size = 1_048_576, redact_patterns: [], redacted_msg: "[REDACTED]", use_default_patterns: true, **kwargs) ⇒ RedactingLogger
Initializes a new instance of the RedactingLogger class.
logdev, shift_age, and shift_size are all using the defaults from the standard Logger class. -> github.com/ruby/logger/blob/0996f90650fd95718f0ffe835b965de18654b71c/lib/logger.rb#L578-L580
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/redacting_logger.rb', line 20 def initialize( logdev = $stdout, shift_age = 0, shift_size = 1_048_576, redact_patterns: [], redacted_msg: "[REDACTED]", use_default_patterns: true, **kwargs ) super(logdev, shift_age, shift_size, **kwargs) @redact_patterns = redact_patterns @redacted_msg = redacted_msg @redact_patterns += Patterns::DEFAULT if use_default_patterns @redact_patterns = Regexp.union(@redact_patterns) end |
Instance Method Details
#add(severity, message = nil, progname = nil) ⇒ Object
Adds a message to the log.
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/redacting_logger.rb', line 42 def add(severity, = nil, progname = nil) , progname = yield if block_given? case when String, Symbol, Numeric = .to_s.gsub(@redact_patterns, @redacted_msg) when Array = .map do |m| m.to_s.gsub(@redact_patterns, @redacted_msg) end when Hash = .transform_values do |v| v.to_s.gsub(@redact_patterns, @redacted_msg) end end progname = progname.to_s.gsub(@redact_patterns, @redacted_msg) if progname super end |