Class: Sequel::Database

Inherits:
Object
  • Object
show all
Defined in:
lib/appydays/loggable/sequel_logger.rb

Instance Method Summary collapse

Instance Method Details

#log_duration(duration, message) ⇒ Object

Log message with message prefixed by duration at info level, or warn level if duration is greater than log_warn_duration.



31
32
33
34
35
36
37
38
# File 'lib/appydays/loggable/sequel_logger.rb', line 31

def log_duration(duration, message)
  lwd = log_warn_duration
  log_each(
    lwd && (duration >= lwd) ? :warn : sql_log_level,
    proc { "(#{'%0.6fs' % duration}) #{message}" },
    proc { ["sequel_query", {duration: duration * 1000, query: message}] },
  )
end

#log_each(level, std, semantic) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/appydays/loggable/sequel_logger.rb', line 40

def log_each(level, std, semantic)
  @loggers.each do |logger|
    if logger.is_a?(SemanticLogger::Base)
      logger.public_send(level, *semantic.call)
    else
      logger.public_send(level, std.call)
    end
  end
end

#log_exception(exception, message) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/appydays/loggable/sequel_logger.rb', line 7

def log_exception(exception, message)
  level = message.match?(/^SELECT NULL AS "?nil"? FROM .* LIMIT 1$/i) ? :debug : :error
  log_each(
    level,
    proc { "#{exception.class}: #{exception.message.strip if exception.message}: #{message}" },
    proc { ["sequel_exception", {sequel_message: message}, exception] },
  )
end

#log_info(message, args = nil) ⇒ Object

Log a message at level info to all loggers.



17
18
19
20
21
22
23
24
25
26
27
# File 'lib/appydays/loggable/sequel_logger.rb', line 17

def log_info(message, args=nil)
  log_each(
    :info,
    proc { args ? "#{message}; #{args.inspect}" : message },
    proc do
      o = {message: message}
      o[:args] = args unless args.nil?
      ["sequel_log", o]
    end,
  )
end