`

Base# filter_parameter_logging

 
阅读更多
# Replace sensitive parameter data from the request log.
      # Filters parameters that have any of the arguments as a substring.
      # Looks in all subhashes of the param hash for keys to filter.
      # If a block is given, each key and value of the parameter hash and all
      # subhashes is passed to it, the value or key
      # can be replaced using String#replace or similar method.
      #
      # Examples:
      #   filter_parameter_logging
      #   => Does nothing, just slows the logging process down
      #
      #   filter_parameter_logging :password
      #   => replaces the value to all keys matching /password/i with "[FILTERED]"
      #
      #   filter_parameter_logging :foo, "bar"
      #   => replaces the value to all keys matching /foo|bar/i with "[FILTERED]"
      #
      #   filter_parameter_logging { |k,v| v.reverse! if k =~ /secret/i }
      #   => reverses the value to all keys matching /secret/i
      #
      #   filter_parameter_logging(:foo, "bar") { |k,v| v.reverse! if k =~ /secret/i }
      #   => reverses the value to all keys matching /secret/i, and
      #      replaces the value to all keys matching /foo|bar/i with "[FILTERED]"
    
 def filter_parameter_logging(*filter_words, &block)
        parameter_filter = Regexp.new(filter_words.collect{ |s| s.to_s }.join('|'), true) if filter_words.length > 0

        define_method(:filter_parameters) do |unfiltered_parameters|
          filtered_parameters = {}

          unfiltered_parameters.each do |key, value|
            if key =~ parameter_filter
              filtered_parameters[key] = '[FILTERED]'
            elsif value.is_a?(Hash)
              filtered_parameters[key] = filter_parameters(value)
            elsif value.is_a?(Array)
              filtered_parameters[key] = value.collect do |item|
                case item
                when Hash, Array
                  filter_parameters(item)
                else
                  item
                end
              end
            elsif block_given?
              key = key.dup
              value = value.dup if value.duplicable?
              yield key, value
              filtered_parameters[key] = value
            else
              filtered_parameters[key] = value
            end
          end

          filtered_parameters
        end
        protected :filter_parameters
分享到:
评论

相关推荐

    String_32bit_Logging_Mitsubishi_cn.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子

    String_32bit_Logging_Mitsubishi_cn.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子String_32bit_Logging_Mitsubishi_cn.zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子String_32bit_Logging_...

    Simple_Key_Logging_API.zip_key logging_keylogging

    标题中的“Simple_Key_Logging_API.zip_key logging_keylogging”表明这是一个关于键盘事件记录的API,主要功能是记录用户的键入信息。关键词“key logging”和“keylogging”都是指这种技术,它通常用于监控和记录...

    commons-logging-1.2_commonslogging_

    《Spring框架中的日志工具:Apache Commons Logging 1.2》 Apache Commons Logging(简称Commons Logging)是Apache软件基金会开发的一个开源项目,它提供了一个轻量级的日志API,旨在为Java应用程序提供一个简单的...

    php.ini中文对译

    ##### Error Handling and Logging (错误处理与日志记录) - **error_reporting** - **指令**: `error_reporting` - **值**: 未明确给出 - **功能**: 控制报告哪些级别的错误。 - **默认**: 默认情况下,此选项...

    PyPI 官网下载 | supervisor_logging_gelf-0.0.1-py2-none-any.whl

    标题中的"PyPI 官网下载 | supervisor_logging_gelf-0.0.1-py2-none-any.whl"指的是Python的包管理平台PyPI(Python Package Index)上发布的名为`supervisor_logging_gelf`的软件包的一个版本,具体版本号为0.0.1。...

    String_32bit_Logging_Mitsubishi_cnPLC程序.zip

    标题中的"String_32bit_Logging_Mitsubishi_cnPLC程序.zip"表明这是一个与三菱(Mitsubishi) PLC相关的32位字符串记录日志程序的压缩包。这可能包含了一个或多个程序文件,用于在Mitsubishi PLC系统中实现32位数据的...

    Python库 | python_logging_rabbitmq-1.1.1-py2.py3-none-any.whl

    Python库`python_logging_rabbitmq`是一个用于将Python的日志记录发送到RabbitMQ服务器的模块,版本为1.1.1。RabbitMQ是一种开源的消息代理和队列服务器,广泛应用于分布式系统中的异步处理和解耦。该库允许开发者在...

    python logger TimedRotatingFile 日志轮转的demo

    # logger = logging.getLogger() # logger.setLevel(logging.INFO) # Log等级总开关 # # 第二步,创建一个handler,用于写入日志文件 # rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time())) # log_...

    JET Jumpstart

    - base_config_ufs_logging_filesys 设置文件系统日志记录选项。 - base_config_profile_del_clusters 设置删除集群。 - base_config_defaultrouter 设置默认路由。 - base_config_notrouter 设置非路由器主机。...

    Python库 | el_logging-0.2.18.tar.gz

    `el_logging` 是一个Python库,专注于日志记录功能,版本为0.2.18。在Python开发中,日志记录是跟踪程序运行状态、调试问题和收集系统信息的关键工具。`el_logging` 库可能提供了对Python内置`logging`模块的扩展或...

    vp.tar.gz_arduino_esp-07_heat_logging_temperatures

    本文将深入探讨一个名为"vp.tar.gz_arduino_esp-07_heat_logging_temperatures"的项目,这是一个专为Terrawatt热泵设计的温度记录程序,利用Arduino ESP-07模块实现数据采集与存储。通过这个项目,我们可以了解到...

    String_32bit_Logging_Mitsubishi_cn.zip

    这里提到的“32bit Logging”很可能是指在Mitsubishi的设备上进行32位数据的记录和日志管理。 字符串在编程中是非常基础且重要的元素,用于存储和处理文本信息。在PLC编程中,字符串处理可能涉及到接收、解析和显示...

    UIP中文文档第七-uIP编译时配置选项.doc

    5. **日志记录**:`#define UIP_CONF_LOGGING` 开启或关闭uIP的日志功能,有助于调试和理解uIP的运行情况。 6. **UDP支持**:`#define UIP_CONF_UDP` 控制是否编译和启用UDP协议功能。 7. **UDP校验和**:`#define...

    logging_warnings_codes.py

    logging_warnings_codes

    Python库 | django_splunk_logging-1.1.0.tar.gz

    《Python库django_splunk_logging-1.1.0:集成Django与Splunk的日志管理》 在Python的世界里,高效且灵活的日志管理是任何项目开发中的关键环节。当我们谈论`django_splunk_logging`这个库时,它正是为了解决这样的...

    iOS_16_CarKeyTesting_Enable_Baobab_Brands_Prod_Cert_and_All_Logging.mobileconfig

    iOS_16_CarKeyTesting_Enable_Baobab_Brands_Prod_Cert_and_All_Logging.mobileconfig

    Python库 | python_logging_discord_handler-0.1-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:python_logging_discord_handler-0.1-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    ssm-base.zip_J2EE_funnye75_writer4po

    4. **Logback+SLF4J**:Logback是用于日志记录的高效框架,而Simple Logging Facade for Java (SLF4J)则是一个日志门面,允许用户在部署时选择不同的日志实现。在这个项目中,它们共同提供了灵活的日志记录功能。 5...

    PyPI 官网下载 | json_logging-1.4.0rc2-py2.py3-none-any.whl

    **PyPI 官网下载 | json_logging-1.4.0rc2-py2.py3-none-any.whl** PyPI(Python Package Index)是Python软件的官方仓库,它提供了丰富的Python库供开发者下载和使用。在给定的资源中,我们关注的是`json_logging`...

Global site tag (gtag.js) - Google Analytics