Class: QuickbaseLogger::Logger

Inherits:
Object
  • Object
show all
Includes:
QuickbaseRecord::Model
Defined in:
lib/quickbase_logger/logger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Logger

Returns a new instance of Logger.

Raises:

  • (ArgumentError)


9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 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

Instance Attribute Details

#purge_frequencyObject

Returns the value of attribute purge_frequency.



7
8
9
# File 'lib/quickbase_logger/logger.rb', line 7

def purge_frequency
  @purge_frequency
end

#text_loggerObject

Returns the value of attribute text_logger.



7
8
9
# File 'lib/quickbase_logger/logger.rb', line 7

def text_logger
  @text_logger
end

Instance Method Details

#error(message) ⇒ Object



53
54
55
# File 'lib/quickbase_logger/logger.rb', line 53

def error(message)
  log << "Error [#{formatted_time}]: #{message}"
end

#info(message) ⇒ Object



45
46
47
# File 'lib/quickbase_logger/logger.rb', line 45

def info(message)
  log << "Info [#{formatted_time}]: #{message}"
end

#log_to_quickbaseObject

Raises:

  • (ArgumentError)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# 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_logsObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
# 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) ⇒ Object



49
50
51
# File 'lib/quickbase_logger/logger.rb', line 49

def warn(message)
  log << "Warn [#{formatted_time}]: #{message}"
end