module Dronejob::Modules::Log

Constants

COLOR_BOLD
COLOR_END
COLOR_GREY
COLOR_GREY_BG
COLOR_RED
COLOR_RED_BG
COLOR_WHITE

Public Instance Methods

alert(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 114
def alert(message)
  log(:alert, message)
end
backtrace(lines) click to toggle source
# File lib/dronejob/modules/log.rb, line 92
def backtrace(lines)
  lines.each do |line|
    line.gsub!("#{Dir.pwd}/", '')
    (file, lineno, info) = line.split(":")
    if %r{ruby/?gems}.match(line).nil?
      if log_stdout?
        log(:error, "#{COLOR_GREY_BG}#{COLOR_GREY} #{lineno.rjust(5, ' ')} #{COLOR_END} #{COLOR_RED}#{file}#{COLOR_END} #{COLOR_GREY}#{info}#{COLOR_END}")
      else
        log(:error, " - #{file}:#{lineno} #{info}")
      end
    end
  end
end
critical(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 110
def critical(message)
  log(:critical, message)
end
debug(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 59
def debug(message)
  log(:debug, message)
end
emergency(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 118
def emergency(message)
  log(:emergency, message)
end
error(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 75
def error(message)
  if message.kind_of?(StandardError)
    if option(:dronejob_log) == "google"
      log(:error, "#{message.backtrace.first}: #{message.message} (#{message.class})\n\t#{message.backtrace.drop(1).join("\n\t")}")
    else
      if log_stdout?
        log(:error, "#{COLOR_RED_BG}#{COLOR_BOLD}#{COLOR_WHITE} ERROR #{COLOR_END} #{COLOR_BOLD}#{message.class}: #{COLOR_RED}#{message.message}#{COLOR_END}")
      else
        log(:error, "[ERROR] #{message.class}: #{message.message}")
      end
      backtrace(message.backtrace)
    end
  else
    log(:error, message)
  end
end
error!(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 106
def error!(message)
  throw message
end
info(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 63
def info(message)
  log(:info, message)
end
log(level, message, job = nil) click to toggle source
# File lib/dronejob/modules/log.rb, line 34
def log(level, message, job = nil)
  if !logger.nil?
    if option(:dronejob_log) == "google"
      message = "[#{job&.job_id}] #{message}" if level != :error
      data = { message: message, job_id: job&.job_id, queue: job&.queue_name, phase: "none" }
      data[:phase_title] = job.phase_config[:title].to_s if job&.phase_config&.key?(:title)
      if job&.phase_config&.key?(:progress)
        data[:phase_progress] = job.phase_config[:progress]
      end
      logger.send(level, data.compact)
    else
      logger.send(level, message)
    end
  elsif job
    puts "#{level}: [#{job.phase}] #{message}"
  else
    puts "#{level}: #{message}"
  end
end
notice(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 67
def notice(message)
  log(:notice, message)
end
warning(message) click to toggle source
# File lib/dronejob/modules/log.rb, line 71
def warning(message)
  log(:warning, message)
end

Private Instance Methods

log_stdout?() click to toggle source
# File lib/dronejob/modules/log.rb, line 164
def log_stdout?
  logdev = logger.instance_variable_get("@logdev")
  logger_source = logdev.dev if logdev.respond_to?(:dev)
  STDOUT == logger_source
end