class RailsSemanticLogger::Sequel::LogSubscriber
Attributes
logger[R]
Public Class Methods
count()
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 25 def self.count RequestStore.fetch(:sql_count) { 0 } end
count=(value)
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 21 def self.count= value RequestStore.store[:sql_count] = value end
reset_count()
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 35 def self.reset_count previous = count self.count = 0 previous end
reset_runtime()
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 29 def self.reset_runtime previous = runtime self.runtime = 0 previous end
runtime()
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 16 def self.runtime # ::ActiveRecord::RuntimeRegistry.sql_runtime ||= 0 RequestStore.fetch(:sql_runtime) { 0 } end
runtime=(value)
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 11 def self.runtime= value # ::ActiveRecord::RuntimeRegistry.sql_runtime = value RequestStore.store[:sql_runtime] = value end
Public Instance Methods
sql(event)
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 41 def sql event self.class.runtime += event.duration self.class.count += 1 return unless logger.debug? payload = event.payload name = payload[:name] log_payload = {sql: payload[:sql].squeeze(" ")} log_payload[:binds] = bind_values payload unless (payload[:binds] || []).empty? log_payload[:allocations] = event.allocations if event.respond_to? :allocations log_payload[:cached] = event.payload[:cached] log = {message: name, payload: log_payload, duration: event.duration} # Log the location of the query itself. if logger.send(:level_index) >= SemanticLogger.backtrace_level_index log[:backtrace] = SemanticLogger::Utils.strip_backtrace caller end logger.debug log end
Private Instance Methods
add_bind_value(binds, key, value)
click to toggle source
When multiple values are received for a single bound field, it is converted into an array
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 69 def add_bind_value binds, key, value key = key.downcase.to_sym unless key.nil? value = (Array(binds[key]) << value) if binds.key? key binds[key] = value end
bind_values(payload)
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 79 def bind_values payload binds = {} binds = " " + payload[:binds].map { |col, v| [col.name, v] } .inspect payload[:binds].each { |col, value| add_bind_value binds, col.name, value } binds end
logger()
click to toggle source
# File lib/rails_semantic_logger/sequel/log_subscriber.rb, line 75 def logger self.class.logger end