Module: SqlTracer::SqlLogger

Defined in:
lib/sql_tracer/sql_logger.rb

Class Method Summary collapse

Class Method Details

.build_sql_struct(sql) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/sql_tracer/sql_logger.rb', line 18

def self.build_sql_struct(sql)
  sql_struct = {
    :sql => sql,
    :operator => 'unknown',
    :db => 'unknown',
    :time => Time.now.to_f
  }
  re = /^(insert into|update|delete|select)\s+(\S+)/i
  begin
    result = sql.scan(re)
    sql_struct[:operator] = result[0][0]
    sql_struct[:db] = result[0][1]
  rescue
  end
  sql_struct
end

.log_sql(sql) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/sql_tracer/sql_logger.rb', line 3

def self.log_sql(sql)
  begin
    if Helper.should_output_sql?(sql)
      backtrace = Thread.current.backtrace
      backtrace = Formatter.remove_filtered_path(backtrace)
      Formatter.print_all(sql, backtrace) unless Helper.disable_console_output?

      SqlTracer::SqlStack.sql_stack << { :sql => build_sql_struct(sql), :stack => backtrace }
    end
  rescue => e
    Rails.logger.error "Failed to log sql in SqlTracer. Error: #{e.message}"
    Rails.logger.error e.backtrace.join("\n")
  end
end