Rails 中过滤长日志参数

2024-06-21

我允许用户在我的网站上上传文件。其中一些文件可能非常大,并且占用了我的日志文件的很大一部分。所以我不想让它出现。我知道:

config.filter_parameters += [:password]

过滤某些参数。但问题是参数位于这样的哈希中:

{
   :person => { 
      :name => 'bob', 
      :file => { 
         :data => 'really long data. this can be tens of thousands of characters long' 
      }
   }
}

我可以将 :data 添加到 filter_parameters 中,但这会隐藏整个站点的大量日志,因为 data 是一个公共键(我也无法将其重命名为更模糊的名称)。 filter_parameters 是否可以接受嵌套参数?或者是否有另一种方法来限制所有参数的长度,这样如果它们大于特定大小,它就不会存储在我的日志文件中。


我最终在我的 application.rb 中添加了类似的内容

config.filter_parameters << lambda do |k, v|
  if k == 'data' && v && v.class == String && v.length > 1024
    v.replace('[FILTER]')
  end
end

我找不到更好的方法来做到这一点。所以我在参数中寻找关键的“数据”。如果该数据的值是字符串并且超过一定长度,我只需替换它,这样日志就不会那么混乱。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails 中过滤长日志参数 的相关文章

随机推荐