Rails 3.1中的Silence ActiveRecord / MySQL日志输出?

时间:2011-10-26 20:58:34

标签: ruby-on-rails ruby-on-rails-3 activerecord

有没有办法在development.log中静音/禁用mysql输出?

例如这个东西:

SQL (0.4ms)  INSERT INTO `billing_infos` (`billing_method`, `city`, `company_id`, `country`, `created_at`, `email`, `fax_number`, `phone_number`, `postal_code`, `province`, `street`, `updated_at`) VALUES (NULL, 'Montreal', NULL, 'Canada', '2011-10-26 20:53:45', NULL, NULL, '(123) 456 7890', 'H1H1H1', 'QC', '1111 Temp', '2011-10-26 20:53:45')
 (0.3ms)  COMMIT
 (0.2ms)  BEGIN
 (0.1ms)  COMMIT
 (0.1ms)  BEGIN
 (0.4ms)  SELECT 1 FROM `sectors` WHERE (`sectors`.`name` = BINARY 'General 25' AND `sectors`.`id` != 1) LIMIT 1

2 个答案:

答案 0 :(得分:4)

如果你想抑制几乎所有的日志输出,@ Shirjeel的方法会起作用,虽然我觉得它有点沉重。

如果您希望抑制单个ActiveRecord类的输出,并且仅限于特定块中,则可以使用silence

BillingInfo.silence do
  BillingInfo.create(:city => "Montreal")
  BillingInfo.create(:city => "Ottawa")
  ... etc
end

如果要抑制所有 ActiveRecord子类的输出,可以执行

ActiveRecord::Base.silence do
  ... manipulate database quietly here...
end

当我导入大量记录或生成大型测试用例时,我会使用它。

答案 1 :(得分:1)

将以下行添加到config / environments / development.rb文件

config.log_level = :info

相关问题