Sex*_*hor 15 ruby-on-rails ruby-on-rails-5
Rails 5提供参数过滤,我已经指定config.filter_parameters += ["my_token"]
了application.rb
.
在dev(环境)模式下测试我的应用程序,我看到my_token
从日志文件的请求行中正确过滤:
Started GET "/something?my_token=[FILTERED]"
但是,紧跟在后面的SQL日志行仍然以纯文本形式包含参数的值("SELECT stuff FROM things"等,my_token
作为参数).
Rails 5是否提供了从日志文件的SQL部分过滤此原始值的方法?
我还在生产模式下运行我的应用程序,虽然日志文件更简洁,但它们仍然在生成的SQL语句的D类型日志行中显示未过滤的值.
我没有指定自定义日志设置 - 默认情况下,我的过滤器参数设置以外的所有设置.
我自己的搜索显示没有相关的讨论.也许我错过了什么?
谢谢!
如果要完全禁用SQL日志进行生产,可以将日志级别更改config/environments/production.rb
为:info
config.log_level = :info
Run Code Online (Sandbox Code Playgroud)
如果您只想使用敏感数据进行少量查询的静态记录,则可以使用Rails.logger.silence.它会在提供的块的持续时间内使日志静音.因此,它可以用于避免将特定的SQL查询写入日志.
用法:
def index
Rails.logger.silence do
# load method is used to force query execution inside the block
@items = Item.all.load
end
end
Run Code Online (Sandbox Code Playgroud)
请记住,查询是懒惰地执行的,因此如果查询在块之外执行,则无论如何都会记录它.以下示例将失败:
def index
Rails.logger.silence do
# The query will be executed outside the block when @items is first used in the view
@items = Item.all
end
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
710 次 |
最近记录: |