Module: QueryOwl::Logger

Defined in:
lib/query_owl/logger.rb

Constant Summary collapse

PREFIX =
"[QueryOwl]"

Class Method Summary collapse

Class Method Details

.log_events(events) ⇒ Object



8
9
10
11
12
# File 'lib/query_owl/logger.rb', line 8

def log_events(events)
  return if events.empty?

  events.each { |event| write(event) }
end

.log_summary(events) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/query_owl/logger.rb', line 14

def log_summary(events)
  return if events.empty?

  counts = events.group_by { |e| e[:type] }.transform_values(&:count)
  parts  = []
  parts << "#{counts[:n_plus_one]} N+1#{"s" if counts[:n_plus_one] != 1}" if counts[:n_plus_one]
  parts << "#{counts[:slow_query]} slow #{counts[:slow_query] == 1 ? "query" : "queries"}" if counts[:slow_query]
  parts << "#{counts[:unused_eager_load]} unused eager load#{"s" if counts[:unused_eager_load] != 1}" if counts[:unused_eager_load]

  Rails.logger.public_send(QueryOwl.config.log_level, "#{PREFIX} Request complete — #{parts.join(", ")}")
end