class QuickbaseLogger::Logger
Attributes
purge_frequency[RW]
text_logger[RW]
Public Class Methods
new(options={})
click to toggle source
Calls superclass method
# File lib/quickbase_logger/logger.rb, line 9 def initialize(options={}) raise ArgumentError.new("QuickbaseLogger::Logger.new must receive a :related_script argument.") unless options[:related_script] @log = [] @start = "#{formatted_date} #{formatted_time}" @purge_frequency = options.fetch(:purge_frequency, 30) file_name = options.fetch(:file_name, 'quickbase_logger_default') if !File.directory?(formatted_logger_path) FileUtils::mkdir_p(formatted_logger_path) end @text_logger = ::Logger.new("#{formatted_logger_path}#{file_name}.log", "monthly") # standard ruby Logger instance @text_logger.info("===== #{Date.today.strftime('%m/%d/%Y')} =====") @text_logger.info("START") super(options) end
Public Instance Methods
error(message)
click to toggle source
# File lib/quickbase_logger/logger.rb, line 53 def error(message) log << "Error [#{formatted_time}]: #{message}" end
info(message)
click to toggle source
# File lib/quickbase_logger/logger.rb, line 45 def info(message) log << "Info [#{formatted_time}]: #{message}" end
log_to_quickbase() { || ... }
click to toggle source
# File lib/quickbase_logger/logger.rb, line 29 def log_to_quickbase raise ArgumentError.new("#log_to_quickbase() must be given a block. Code run inside that block will be logged to the QuickBase application.") unless block_given? begin yield log_success_to_text_file log_success_to_quickbase rescue => err log_failure_to_text_file(err) log_failure_to_quickbase(err) raise err end purge_logs end
purge_logs()
click to toggle source
# File lib/quickbase_logger/logger.rb, line 57 def purge_logs purge_date = Date.today - purge_frequency.days purge_date = purge_date.strftime("%m/%d/%Y") related_script_fid = self.class.fields[:related_script].fid begin qb_client.purge_records(self.class.dbid, {query: "{#{related_script_fid}.EX.#{related_script}}AND{1.OBF.#{purge_date}}"}) rescue StandardError => err text_logger.error("--- FAILED TO PURGE OLD RECORDS ---") text_logger.error(err) text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}") raise err end end
warn(message)
click to toggle source
# File lib/quickbase_logger/logger.rb, line 49 def warn(message) log << "Warn [#{formatted_time}]: #{message}" end
Private Instance Methods
formatted_date()
click to toggle source
# File lib/quickbase_logger/logger.rb, line 122 def formatted_date DateTime.now.strftime("%m/%d/%Y").strip end
formatted_logger_path()
click to toggle source
# File lib/quickbase_logger/logger.rb, line 130 def formatted_logger_path path = QuickbaseLogger.configuration.logger_path || "/log" path[-1] =~ /\// ? path : "#{path}/" end
formatted_time()
click to toggle source
# File lib/quickbase_logger/logger.rb, line 126 def formatted_time DateTime.now.strftime("%l:%M:%S %p").strip end
log_failure_to_quickbase(err)
click to toggle source
# File lib/quickbase_logger/logger.rb, line 104 def log_failure_to_quickbase(err) self.end = "#{formatted_date} #{formatted_time}" self.status = "Failure" self.log = self.log.join("\n") self.log << "\nERROR: #{err} \n" self.log << "BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}" begin save rescue StandardError => err text_logger.error("--- COULD NOT WRITE FAILURE TO QUICKBASE ---") text_logger.error(err) text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}") raise err end end
log_failure_to_text_file(err)
click to toggle source
# File lib/quickbase_logger/logger.rb, line 80 def log_failure_to_text_file(err) joined_logs = self.log.join("\n\t") text_logger.info("LOGS:\n\t#{joined_logs}") text_logger.error("ERROR: #{err}") text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}") text_logger.info("END") end
log_success_to_quickbase()
click to toggle source
# File lib/quickbase_logger/logger.rb, line 89 def log_success_to_quickbase self.status = "Success" self.end = "#{formatted_date} #{formatted_time}" self.log = self.log.join("\n") begin save rescue StandardError => err text_logger.error("--- COULD NOT WRITE SUCCESS TO QUICKBASE ---") text_logger.error(err) text_logger.error("BACKTRACE:\n\t#{err.backtrace.slice(0, 10).join("\n\t")}") raise err end end
log_success_to_text_file()
click to toggle source
# File lib/quickbase_logger/logger.rb, line 74 def log_success_to_text_file joined_logs = self.log.join("\n\t") text_logger.info("LOGS:\n\t#{joined_logs}") text_logger.info("END") end