我只想在日志中看到与CREATE / UPDATE / DESTROY相关的sql语句。我不希望任何与READ相关的语句,缓存或日志中显示的任何其他信息,因为它很难筛选出来。
目前在app/config/environments/production.rb
范围内,我有以下配置集在日志中显示太多:
config.log_level = :debug
生产的默认配置显示的信息太少。它忽略了我想看到的所有sql语句:
# shows too little information
config.log_level = :info
rails中是否有配置设置让日志仅输出我想要查看的信息?如果不是:我怎么能这样做?
答案 0 :(得分:3)
您可以通过将ActiveRecord
设置为log_level
来禁用:info
数据库查询的记录。
然后使用Rails'ActiveSupport::Instrumentation
并订阅sql.active_record
事件。
只需将以下代码添加到初始值设定项中:
# in `config/initializers/query_logger.rb`
class QueryLogger
def call(name, started, finished, unique_id, payload)
query = payload[:sql]
Rails.logger.info("SQL Query: #{query}") unless query.start_with?('SELECT')
end
end
ActiveSupport::Notifications.subscribe('sql.active_record', QueryLogger.new)