class GoodData::Bricks::MaskLoggerDecorator
Logger decorator with ability to mask sensitive values
Public Class Methods
extract_values(values)
click to toggle source
Extract
values to mask from structured data @param values [String] or [Hash] or [Array] structured data to be extracted @return [[String]] array of all String in values
# File lib/gooddata/bricks/middleware/mask_logger_decorator.rb, line 21 def extract_values(values) if values.is_a?(String) if values.nil? || values.empty? || values.gsub(/[*|\s]/, '') == '' [] else [values] end elsif values.is_a?(Hash) || values.is_a?(Array) (values.is_a?(Hash) ? values.values : values).reduce([]) do |strings, item| strings.concat extract_values(item) strings end else [] end end
new(logger, params = [])
click to toggle source
entry-point @param [Logger] logger logger to decorated @param [Array] values_to_mask sensitive values to be masked out from logs
# File lib/gooddata/bricks/middleware/mask_logger_decorator.rb, line 12 def initialize(logger, params = []) @logger = logger @values_to_mask = GoodData::Bricks::MaskLoggerDecorator.extract_values(params) end
Public Instance Methods
add(severity, message = nil, progname = nil)
click to toggle source
# File lib/gooddata/bricks/middleware/mask_logger_decorator.rb, line 60 def add(severity, message = nil, progname = nil) mask message mask progname @logger.add(severity, message, progname) end
class()
click to toggle source
Decorator pretends being inner logger itselfs. @return inner logger class
# File lib/gooddata/bricks/middleware/mask_logger_decorator.rb, line 56 def class @logger.class end
debug?()
click to toggle source
# File lib/gooddata/bricks/middleware/mask_logger_decorator.rb, line 46 def debug? true end
mask(message)
click to toggle source
Masks given message @param message [String] or [Hash] or [Array] message to mask @return masked_message [String] or [Hash] or [Array] masked message
# File lib/gooddata/bricks/middleware/mask_logger_decorator.rb, line 69 def mask(message) unless message.nil? string = message.to_s @values_to_mask.reduce(string) do |masked_message, value_to_mask| masked_message.gsub(value_to_mask, "******") end end end