Way to disable Rails SQL logs?

后端 未结 3 748
清歌不尽
清歌不尽 2021-02-09 15:15

Is there a way to disable SQL logs in Rails, other than changing the log level? I\'ve got some logger.debug statements that I\'d like to print out in my ActiveRecord models, but

相关标签:
3条回答
  • 2021-02-09 16:09

    You can moneky-patch it, put this in a file such as config/initializers/disable_ar_logging.rb:

    class ActiveRecord::ConnectionAdapters::AbstractAdapter
      def log_info(*args); end
    end
    
    0 讨论(0)
  • 2021-02-09 16:10

    Dan,

    Is this in production or development mode? If it's development mode this is usually what I do:

    logger.info("DEBUG my message here")
    logger.info("DEBUG #{my_object.inspect}")
    
    tail -f log/development | grep DEBUG
    
    0 讨论(0)
  • 2021-02-09 16:12

    Here's what worked for me in Rails 3.0.5:

      class ActiveRecord::ConnectionAdapters::AbstractAdapter
        def log(sql, name)
          name ||= "SQL"
          yield
        rescue Exception => e
          message = "#{e.class.name}: #{e.message}: #{sql}"
          @logger.debug message if @logger
          raise translate_exception(e, message)
        end
      end
    

    It's this method with the line that writes to the log removed. SQL cache hits are still displayed in the log and I haven't figured out how to disable those.

    0 讨论(0)
提交回复
热议问题