【问题标题】:In the rails 4 console, how do I log all sql activity to file BUT not to the console output?在 rails 4 控制台中,如何将所有 sql 活动记录到文件但不记录到控制台输出?
【发布时间】:2015-07-23 05:28:07
【问题描述】:

很多类似的问题询问如何在控制台窗口中隐藏 sql 日志,答案建议更改 Active Record 的日志级别或完全关闭 AR 日志记录。

但是我仍然希望 AR 记录所有内容,我只想将其记录到文件中,而不是记录到控制台输出窗口(因为它使控制台变得嘈杂,所以我看不到我的手动日志)。

我如何实现我想要的?

【问题讨论】:

    标签: ruby-on-rails-4 activerecord logging rails-console


    【解决方案1】:

    这个ActiveRecord::Railtie 代码是将记录器消息广播到控制台的内容:

    # When loading console, force ActiveRecord::Base to be loaded
    # to avoid cross references when loading a constant for the
    # first time. Also, make it output to STDERR.
    console do |app|
      require "active_record/railties/console_sandbox" if app.sandbox?
      require "active_record/base"
      console = ActiveSupport::Logger.new(STDERR)
      Rails.logger.extend ActiveSupport::Logger.broadcast console
    end
    

    因此,当您第一次进入控制台时,您可以做的一件事是将ActiveRecord::Base.logger 设置为一个不会将其消息广播到控制台的新记录器。例如:

    ActiveRecord::Base.logger = ActiveSupport::Logger.new("log/development.log")
    

    "log/development.log" 可以更改为您想要发送 SQL 输出的任何位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多