Sha256: dc1e9baccd76f198d38ba7561ccdfd373c5b39dd9bba76b42c33fbeb511fc229

Contents?: true

Size: 1.17 KB

Versions: 6

Compression:

Stored size: 1.17 KB

Contents

# Copyright (c) 2010-2018 GoodData Corporation. All rights reserved.
# This source code is licensed under the BSD-style license found in the
# LICENSE file in the root directory of this source tree.

module GoodData
  module Bricks
    # Logger decorator with ability to mask sensitive values
    class MaskLoggerDecorator
      # entry-point
      # @param [Logger] logger logger to decorated
      # @param [Array] values_to_mask sensitive values to be masked out from logs
      def initialize(logger, values_to_mask = [])
        @logger = logger
        @values_to_mask = values_to_mask
      end

      # log methods to be decorated
      %i[debug error fatal info unknown warn].each do |level|
        define_method level do |message|
          @logger.send(level, mask(message))
        end
      end

      private

      # Masks given message.
      # @param message  [String] message to mask
      # @return masked_message [String] masked message
      def mask(message)
        unless message.nil?
          @values_to_mask.reduce(message) do |masked_message, value_to_mask|
            masked_message.gsub(value_to_mask, "******")
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
gooddata-1.3.6-java lib/gooddata/bricks/middleware/mask_logger_decorator.rb
gooddata-1.3.6 lib/gooddata/bricks/middleware/mask_logger_decorator.rb
gooddata-1.3.5-java lib/gooddata/bricks/middleware/mask_logger_decorator.rb
gooddata-1.3.5 lib/gooddata/bricks/middleware/mask_logger_decorator.rb
gooddata-1.3.4-java lib/gooddata/bricks/middleware/mask_logger_decorator.rb
gooddata-1.3.4 lib/gooddata/bricks/middleware/mask_logger_decorator.rb