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

Show SQL ActiveRecord queries in rails console using SemanticLogger gem

SemanticLogger v4.4.0 gem 已添加到存储库,现在使用 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 尝试了不同的设置标志,但没有找到像以前那样 returns 查询的标志,现在检测性能不佳的查询更加复杂。

作为 "partial-fix" 我目前将其添加到一个组中并跳过 develop:

gem 'rails_semantic_logger', group: %i[production qa]

这适用于我的本地,但我希望我可以让它适用于所有环境。

这取决于 semantic_logger 配置,但您应该尝试

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"

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

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