Dra*_*fly 7 ruby logging ruby-on-rails ruby-on-rails-3
我允许用户在我的网站上传文件.其中一些文件可能非常大,它占用了我的大量日志文件.所以我不希望它出现.我知道:
config.filter_parameters += [:password]
Run Code Online (Sandbox Code Playgroud)
过滤某些参数.但问题是它的参数是这样的哈希:
{
:person => {
:name => 'bob',
:file => {
:data => 'really long data. this can be tens of thousands of characters long'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我可以将数据添加到filter_parameters但是这会在整个站点中隐藏大量日志,因为数据是一个公共密钥(我也无法将其重命名为更加模糊的东西).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
Run Code Online (Sandbox Code Playgroud)
我找不到更好的方法来做到这一点.所以我在params中寻找关键的"数据".如果该数据的值是一个字符串并超过一定长度,我只需将其替换,以便日志不会那么混乱.