使用SemanticLogger gem在Rails控制台中显示SQL ActiveRecord查询

时间:2019-05-30 19:39:21

标签: ruby-on-rails ruby rails-activerecord rails-semantic-logger

SemanticLogger v4.4.0宝石已添加到存储库,现在使用rails console时,所有ActiveRecord查询都消失了:

之前:

> MyModel.last
  MyModel Load (3.4ms)  SELECT  `my_models`.* FROM `my_models`  ORDER BY `my_models`.`id` DESC LIMIT 1
=> #<MyModel:0x00007ff 
  id: ...

之后:

> MyModel.last
=> #<MyModel:0x00007ff
  id: ...

我为SemanticLogger尝试了不同的设置标志,但没有像以前那样找到返回查询的标志,现在要检测性能较差的查询更加复杂。

2 个答案:

答案 0 :(得分:3)

这取决于语义记录器的配置,但是您应该尝试

SemanticLogger.default_level = :trace

(您可以在控制台中运行它,如果可行,请将其添加到您的Initializers / development.rb或local.rb中)

就我而言,我现在将看到输出,但以JSON格式显示:

> 2020-02-26 11:26:24.094050 D [2220:11016600] (220.0ms) ActiveRecord -- 
{ :sql => "SELECT COUNT(*) FROM \"things\"" }

所以我需要添加我的local.rb(不确定如何在控制台中动态完成此操作)

Rails.application.configure do
  config.rails_semantic_logger.semantic = false
end

去看

2020-02-26 11:31:34.972958 D [6280:14940580] ActiveRecord::Base --
    (198.6ms)  SELECT COUNT(*) FROM "things"

答案 1 :(得分:1)

SemanticLogger.default_level = :trace 在控制台中对我没有帮助。

我发现了这个问题:https://github.com/reidmorrison/rails_semantic_logger/issues/83