Module: DataDuck::Logs

Defined in:
lib/dataduck/logs.rb

Constant Summary collapse

@@ONE_MB_IN_BYTES =
1048576
@@logger =
nil

Class Method Summary collapse

Class Method Details

.debug(message) ⇒ Object



25
26
27
28
29
30
31
# File 'lib/dataduck/logs.rb', line 25

def Logs.debug(message)
  self.ensure_logger_exists!
  message = Logs.sanitize_message(message)

  puts "[DEBUG] #{ message }"
  @@logger.debug(message)
end

.ensure_logger_exists!Object



19
20
21
22
23
# File 'lib/dataduck/logs.rb', line 19

def Logs.ensure_logger_exists!
  log_file_path = DataDuck.project_root + '/log/dataduck.log'
  DataDuck::Util.ensure_path_exists!(log_file_path)
  @@logger ||= Logger.new(log_file_path, shift_age = 100, shift_size = 100 * @@ONE_MB_IN_BYTES)
end

.error(err, message = nil) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/dataduck/logs.rb', line 49

def Logs.error(err, message = nil)
  self.ensure_logger_exists!
  message = err.to_s unless message
  message = Logs.sanitize_message(message)

  puts "[ERROR] #{ message }"
  @@logger.error(message)

  Logs.third_party_error_tracking!(err)
end

.info(message) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/dataduck/logs.rb', line 33

def Logs.info(message)
  self.ensure_logger_exists!
  message = Logs.sanitize_message(message)

  puts "[INFO] #{ message }"
  @@logger.info(message)
end

.sanitize_message(message) ⇒ Object



72
73
74
75
76
77
78
# File 'lib/dataduck/logs.rb', line 72

def Logs.sanitize_message(message)
  message = message.gsub(/aws_access_key_id=[^';]+/, "aws_access_key_id=******")
  message = message.gsub(/AWS_ACCESS_KEY_ID=[^';]+/, "AWS_ACCESS_KEY_ID=******")
  message = message.gsub(/aws_secret_access_key=[^';]+/, "aws_secret_access_key=******")
  message = message.gsub(/AWS_SECRET_ACCESS_KEY=[^';]+/, "AWS_SECRET_ACCESS_KEY=******")
  message
end

.third_party_error_tracking!(err) ⇒ Object



62
63
64
65
66
67
68
69
70
# File 'lib/dataduck/logs.rb', line 62

def Logs.third_party_error_tracking!(err)
  if ENV['SENTRY_DSN']
    Raven.capture_exception(err)
  end

  if ENV['AIRBRAKE_PROJECT_ID'] && ENV['AIRBRAKE_PROJECT_KEY']
    Airbrake.notify_sync(err)
  end
end

.warn(message) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/dataduck/logs.rb', line 41

def Logs.warn(message)
  self.ensure_logger_exists!
  message = Logs.sanitize_message(message)

  puts "[WARN] #{ message }"
  @@logger.warn(message)
end