Module: SequelLoggers

Included in:
StoryTeller::Persistence
Defined in:
lib/story_teller/persistence.rb

Overview

The SequelLoggers module

Constant Summary collapse

DatabaseLogging =
Struct.new(:memo).new({})

Instance Method Summary collapse

Instance Method Details

#add_logger(database, logger) ⇒ Object



64
65
66
# File 'lib/story_teller/persistence.rb', line 64

def add_logger(database, logger)
  database.loggers << logger unless database.loggers.include?(logger)
end

#delete_logger(database, logger) ⇒ Object



68
69
70
# File 'lib/story_teller/persistence.rb', line 68

def delete_logger(database, logger)
  database.loggers.delete(logger) if database.loggers.include?(logger)
end

#disable_query_loggingObject



88
89
90
91
92
93
94
95
# File 'lib/story_teller/persistence.rb', line 88

def disable_query_logging
  logger = DatabaseLogging.memo[:logger]
  Sequel::DATABASES.each do |database|
    logger.debug "Disabling query logging for #{database}"
    delete_logger(database, logger)
    set_log_level(database, DatabaseLogging.memo[:preserved_log_levels][database])
  end
end

#enable_query_loggingObject



77
78
79
80
81
82
83
84
85
86
# File 'lib/story_teller/persistence.rb', line 77

def enable_query_logging
  DatabaseLogging.memo[:logger] ||= Logger.new($stdout)
  DatabaseLogging.memo[:preserved_log_levels] ||= {}
  logger = DatabaseLogging.memo[:logger]
  Sequel::DATABASES.each do |database|
    add_logger(database, logger)
    set_log_level(database, :debug)
    logger.debug "Enabled query logging for #{database}"
  end
end

#set_log_level(database, level) ⇒ Object



72
73
74
75
# File 'lib/story_teller/persistence.rb', line 72

def set_log_level(database, level)
  DatabaseLogging.memo[:preserved_log_levels][database] = database.sql_log_level
  database.sql_log_level = level unless level.nil?
end