lib/reptile/delta_monitor.rb in reptile-0.0.1 vs lib/reptile/delta_monitor.rb in reptile-0.0.4
- old
+ new
@@ -1,5 +1,7 @@
+require 'logger'
+
module Reptile
# This monitor compares the row counts for each table for each master and slave.
class DeltaMonitor
# Set the user settings for a user that has global SELECT privilidgess
def self.user=(user_settings)
@@ -10,19 +12,16 @@
def self.user
raise "You need to specify a user!" if @user.nil?
@user
end
- def self.open_log()
- logFile = 'db_delta.log'
- @logFileObj = File.open(logFile, "a")
+ def self.logger=(new_logger)
+ @logger = new_logger
end
-
- def self.log(msg)
- open_log if @logFileObj.nil?
- puts msg
- @logFileObj.puts msg
+
+ def self.get_logger
+ @logger ||= Logger.new(STDOUT)
end
# Retrieve the active database connection. Nil of none exists.
def self.connection
ActiveRecord::Base.connection
@@ -44,21 +43,27 @@
end
print_deltas(db_name, deltas, master_configs)
deltas
+ rescue Exception => e
+ get_logger.error "Error: Caught #{e}"
+ get_logger.error "DB Name: #{db_name}"
+ get_logger.error "Master Configs: #{master_configs.inspect}"
+ get_logger.error "Slave Configs: #{slave_configs.inspect}"
+ raise e
end
# Prints stats about the differences in number of rows between the master and slave
def self.print_deltas(db_name, deltas, configs)
non_zero_deltas = deltas.select{|table, delta| not delta.zero?}
if non_zero_deltas.size.zero?
- log "Replication counts A-OK for #{db_name} on #{configs['host']} @ #{Time.now}"
+ get_logger.info "Replication counts A-OK for #{db_name} on #{configs['host']} @ #{Time.now}"
else
- log "Replication Row Count Deltas for #{db_name} on #{configs['host']} @ #{Time.now}"
- log "There #{non_zero_deltas.size > 1 ? 'are' : 'is'} #{non_zero_deltas.size} #{non_zero_deltas.size > 1 ? 'deltas' : 'delta'}"
+ get_logger.info "Replication Row Count Deltas for #{db_name} on #{configs['host']} @ #{Time.now}"
+ get_logger.info "There #{non_zero_deltas.size > 1 ? 'are' : 'is'} #{non_zero_deltas.size} #{non_zero_deltas.size > 1 ? 'deltas' : 'delta'}"
non_zero_deltas.each do |table, delta|
- log " #{table} table: #{delta}" unless delta.zero?
+ get_logger.info " #{table} table: #{delta}" unless delta.zero?
end
end
end
# Returns an array of strings containing the table names
\ No newline at end of file