gyl*_*laz 245 sql console ruby-on-rails
当我在控制台中执行命令时,有没有办法禁用SQL查询日志记录?理想情况下,如果我可以禁用它并使用控制台中的命令重新启用它,那将是很棒的.
我正在尝试调试一些东西并使用"puts"打印出一些相关数据.但是,sql查询输出使其难以阅读.
编辑: 我找到了另一个解决方案,因为将记录器设置为nil有时会引发错误,如果我的代码以外的其他东西试图调用logger.warn
nil
您可以将记录器的级别设置为,而不是将记录器设置为1
.
ActiveRecord::Base.logger.level = 1 # or Logger::INFO
Run Code Online (Sandbox Code Playgroud)
Rya*_*igg 290
要关闭它:
old_logger = ActiveRecord::Base.logger
ActiveRecord::Base.logger = nil
Run Code Online (Sandbox Code Playgroud)
要重新打开它:
ActiveRecord::Base.logger = old_logger
Run Code Online (Sandbox Code Playgroud)
jro*_*ind 69
这是我认为更清洁的一种变体,它仍允许从AR进行潜在的其他日志记录.在config/environments/development.rb中:
config.after_initialize do
ActiveRecord::Base.logger = Rails.logger.clone
ActiveRecord::Base.logger.level = Logger::INFO
end
Run Code Online (Sandbox Code Playgroud)
Chr*_*nig 55
这可能不是适合控制台的解决方案,但Rails有一个解决此问题的方法:Logger#silence
ActiveRecord::Base.logger.silence do
# the stuff you want to be silenced
end
Run Code Online (Sandbox Code Playgroud)
Mic*_*cah 14
对于Rails 4,您可以将以下内容放在环境文件中:
# /config/environments/development.rb
config.active_record.logger = nil
Run Code Online (Sandbox Code Playgroud)
fak*_*eft 13
如果有人想要 实际删除SQL语句日志记录(不更改日志记录级别,同时保持其AR模型的日志记录):
写入日志的行(在Rails 3.2.16中,无论如何)是对debug
in 的调用lib/active_record/log_subscriber.rb:50
.
该调试方法由.定义 ActiveSupport::LogSubscriber
..
所以我们可以通过覆盖它来淘汰日志:
module ActiveSupport
class LogSubscriber
def debug(*args, &block)
end
end
end
Run Code Online (Sandbox Code Playgroud)
我用过这个:config.log_level = :info
编辑config/environments/performance.rb
对我很有用,拒绝SQL输出,只显示渲染和重要信息.
归档时间: |
|
查看次数: |
88050 次 |
最近记录: |