【问题标题】:Show SQL ActiveRecord queries in rails console using SemanticLogger gem使用 SemanticLogger gem 在 Rails 控制台中显示 SQL ActiveRecord 查询
【发布时间】:2019-05-30 19:39:20
【问题描述】:

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 尝试了不同的设置标志,但没有找到像以前那样返回查询的设置标志,现在检测性能不佳的查询更加复杂。

作为“部分修复”,我目前将其添加到一个组中并跳过了develop

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

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

【问题讨论】:

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


    【解决方案1】:

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

    SemanticLogger.default_level = :trace
    

    (您可以在控制台中运行它,如果有效 - 将其添加到您的初始化程序/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"
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 你需要跟踪日志并且在那里,它不是很好,我最终设置了一个 env 变量标志来启用/禁用开发中的 gem
      • @zetacu 我已将config.semantic_logger.add_appender 添加到STDOUT,如上述问题中所述,在Rails.application.console do 中。如果你愿意,我可以在我的答案中附加一个代码 sn-p,但这看起来很简单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 2012-07-20
      • 2015-12-21
      • 1970-01-01
      相关资源
      最近更新 更多