Sha256: 780a4ef3857d179ea8049088a4d3b8b8d71ea6c46ba80364abaedb39d37a85e8

Contents?: true

Size: 1.51 KB

Versions: 8

Compression:

Stored size: 1.51 KB

Contents

module Rpush
  class Logger
    def initialize
      log_dir = File.join(Rpush.config.log_dir, 'log')
      FileUtils.mkdir_p(log_dir)
      log = File.open(File.join(log_dir, 'rpush.log'), 'a')
      log.sync = true
      setup_logger(log)
    rescue Errno::ENOENT, Errno::EPERM => e
      @logger = nil
      error(e)
      error('Logging disabled.')
    end

    def info(msg)
      log(:info, msg)
    end

    def error(msg)
      log(:error, msg, 'ERROR', STDERR)
    end

    def warn(msg)
      log(:warn, msg, 'WARNING', STDERR)
    end

    private

    def setup_logger(log)
      if Rpush.config.logger
        @logger = Rpush.config.logger
      elsif ActiveSupport.const_defined?('BufferedLogger')
        @logger = ActiveSupport::BufferedLogger.new(log, Rails.logger.level)
        @logger.auto_flushing = Rails.logger.respond_to?(:auto_flushing) ? Rails.logger.auto_flushing : true
      else
        @logger = ActiveSupport::Logger.new(log, Rails.logger.level)
      end
    end

    def log(where, msg, prefix = nil, io = STDOUT)
      if msg.is_a?(Exception)
        formatted_backtrace = msg.backtrace.join("\n")
        msg = "#{msg.class.name}, #{msg.message}\n#{formatted_backtrace}"
      end

      formatted_msg = "[#{Time.now.to_s(:db)}] "
      formatted_msg << "[#{prefix}] " if prefix
      formatted_msg << msg

      if io == STDERR
        io.puts formatted_msg
      elsif Rpush.config.foreground
        io.puts formatted_msg
      end

      @logger.send(where, formatted_msg) if @logger
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rpush-2.0.1-java lib/rpush/logger.rb
rpush-2.0.1 lib/rpush/logger.rb
rpush-2.0.0-java lib/rpush/logger.rb
rpush-2.0.0 lib/rpush/logger.rb
rpush-2.0.0.rc1-java lib/rpush/logger.rb
rpush-2.0.0.rc1 lib/rpush/logger.rb
rpush-2.0.0.beta2 lib/rpush/logger.rb
rpush-2.0.0.beta1 lib/rpush/logger.rb