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 I want to hide the SQL statements.
3 Answers
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
1 Comment
Ulysse BN
This answer looks out of date, It doesn't work for my using active_record 4.2.8
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
1 Comment
Chiwai Chan
This isn't helpful, it does not at all disable logging.
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.