class Pushr::Daemon::Logger

Public Class Methods

new(options) click to toggle source
# File lib/pushr/daemon/logger.rb, line 4
def initialize(options)
  @options = options

  if @options[:foreground]
    STDOUT.sync = true
    @logger = ::Logger.new(STDOUT)
  else
    log_dir = File.join(Dir.pwd, 'log')
    FileUtils.mkdir_p(log_dir)
    log = File.open(File.join(log_dir, 'pushr.log'), 'a')
    log.sync = true
    @logger = ::Logger.new(log)
  end

  @logger.level = ::Logger::INFO
  @logger.formatter = proc do |severity, datetime, progname, msg|
    "[#{datetime}] #{severity}: #{msg}\n"
  end
end

Public Instance Methods

error(msg) click to toggle source
# File lib/pushr/daemon/logger.rb, line 28
def error(msg)
  error_notification(msg)
  log(::Logger::ERROR, msg, 'ERROR')
end
info(msg) click to toggle source
# File lib/pushr/daemon/logger.rb, line 24
def info(msg)
  log(::Logger::INFO, msg)
end
warn(msg) click to toggle source
# File lib/pushr/daemon/logger.rb, line 33
def warn(msg)
  log(::Logger::WARN, msg, 'WARNING')
end

Private Instance Methods

do_error_notification?(e) click to toggle source
# File lib/pushr/daemon/logger.rb, line 52
def do_error_notification?(e)
  @options[:error_notification] && ((e.is_a?(DeliveryError) && e.notify) || e.is_a?(Exception))
end
error_notification(e) click to toggle source
# File lib/pushr/daemon/logger.rb, line 46
def error_notification(e)
  if do_error_notification?(e) && defined?(Airbrake)
    Airbrake.notify(e)
  end
end
log(level, msg, prefix = nil) click to toggle source
# File lib/pushr/daemon/logger.rb, line 39
def log(level, msg, prefix = nil)
  if msg.is_a?(Exception)
    msg = "#{msg.class.name}, #{msg.message}: #{msg.backtrace.join("\n") if msg.backtrace}"
  end
  @logger.add(level, msg)
end