0.05
No release in over 3 years
Low commit activity in last 3 years
Adds SQL analysis and debugging info to Rails applications.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 5.8.3
>= 0

Runtime

>= 4.0
 Project Readme

SQL Logging¶ ↑

<img src=“https://travis-ci.org/lightyear/sql-logging.svg?branch=master” alt=“Build Status” />

The SQL Logging gem adds useful SQL debugging tools to ActiveRecord. The gem is a repackaging of the old SQL Logging plug-in for Rails 2.x. It, in turn, was based on ideas and plug-ins from Adam Doppelt’s (standard logging enhancements) and Nathaniel Talbott (the QueryTrace plug-in).

This gem is for Rails 4+ only. It supports MySQL (including the mysql2 gem), PostgreSQL and SQLite.

Usage¶ ↑

Once installed, the out-of-the-box behavior gives you:

  • A cleaned-up backtrace after every SQL query, so you know exactly what piece of code triggered the query.

  • A report of the number of rows and rough count of bytes returned after each query.

  • After each request completes, additional summary information telling you the number of statements executed, as well as a rough total number of bytes received from the database.

  • A top 10 list of SQL executions, sorted by total execution time (based on the location of the query in code), including the total number of rows and bytes returned over all executions.

All of this additional information is logged at DEBUG level, so it won’t clutter up your production log files.

Options¶ ↑

The Top 10 summary provides the most options to customize its behavior.

If you want more or fewer than 10 queries, you can easily change that:

SqlLogging.configuration.top_sql_queries = 5

If you want the sorted by something other than the total execution time, you can instead sort by the median execution time, number of executions or rows/bytes returned over all executions of the query:

SqlLogging.configuration.show_top_sql_queries = :median_time
SqlLogging.configuration.show_top_sql_queries = :queries
SqlLogging.configuration.show_top_sql_queries = :rows
SqlLogging.configuration.show_top_sql_queries = :bytes

You can also turn the list off entirely:

SqlLogging.configuration.show_top_sql_queries = false

If you don’t want to see query backtraces:

SqlLogging.configuration.show_sql_backtrace = false

General Configuration¶ ↑

In addition to the statistics configuration, more general aspects of the gem can be set through the configuration.

For example, the logger can be set here to store results in alternate location:

SqlLogging.configuration.logger = ActiveSupport::Logger.new(STDOUT)

Additionally, the backtrace cleaner used for generating the call stack can be configured here:

SqlLogging.configuration.backtrace_cleaner.remove_silencers!

Acknowledgments¶ ↑

Adam’s post describing his logging improvements is at gurge.com/blog/2006/11/09/rails-sql-logging-improvements/.

Nathaniel’s QueryTrace is available at terralien.com/projects/querytrace/.

Contact¶ ↑

Feedback and/or patches to make this gem better are greatly appreciated!

Steve Madsen Light Year Software, LLC lightyearsoftware.com steve@lightyearsoftware.com