Module: Simple::SQL::Logging

Extended by:
Forwardable, Logging
Included in:
Logging
Defined in:
lib/simple/sql/logging.rb

Instance Method Summary collapse

Instance Method Details

#loggerObject

The logger object.

If no logger was set via Simple::SQL::Logging.logger = <foo> this returns a default logger.



14
15
16
# File 'lib/simple/sql/logging.rb', line 14

def logger
  @logger ||= default_logger
end

#logger=(logger) ⇒ Object

The logger object.



19
20
21
# File 'lib/simple/sql/logging.rb', line 19

def logger=(logger)
  @logger = logger
end

#slow_query_tresholdObject



48
49
50
# File 'lib/simple/sql/logging.rb', line 48

def slow_query_treshold
  @slow_query_treshold
end

#slow_query_treshold=(slow_query_treshold) ⇒ Object



52
53
54
55
# File 'lib/simple/sql/logging.rb', line 52

def slow_query_treshold=(slow_query_treshold)
  expect! slow_query_treshold > 0
  @slow_query_treshold = slow_query_treshold
end

#with_logged_query(sql, *args, &_block) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/simple/sql/logging.rb', line 57

def with_logged_query(sql, *args, &_block)
  r0 = Time.now
  rv = yield
  runtime = Time.now - r0

  logger.debug do
    "[sql] %.3f secs: %s" % [runtime, Formatting.format(sql, *args)]
  end

  if slow_query_treshold && runtime > slow_query_treshold
    log_slow_query(sql, *args, runtime: runtime)
  end

  rv
rescue StandardError => e
  runtime = Time.now - r0
  logger.warn do
    "[sql] %.3f secs: %s:\n\tfailed with error %s" % [runtime, Formatting.format(sql, *args), e.message]
  end

  raise
end