Sha256: ef80e48bc279c545cdca69e21940f33e1c300494e828b1723274c56269a62243

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

require 'logger'

class App_logger
  private_class_method :new

  def initialize(file_path)
    self.file_path = file_path
    ensure_log_directory
    self.logger = Logger.new(self.file_path)
    self.logger.formatter = proc do |severity, datetime, progname, msg|
      "[#{datetime}] #{severity}: #{msg}\n"
    end
    setup_log_level
  end

  def self.instance(file_path = nil)
    @instance ||= new(file_path)
  end

  def log(severity, message)
    self.logger.send(severity, message)
  end

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

  def debug(message)
    log(:debug, message)
  end

  def error(message)
    log(:error, message)
  end

  def warn(message)
    log(:warn, message)
  end

  def fatal(message)
    log(:fatal, message)
  end

  private
  attr_accessor :logger, :file_path

  def ensure_log_directory
    log_directory = File.dirname(self.file_path)
    Dir.mkdir(log_directory) unless Dir.exist?(log_directory)
  end

  def setup_log_level
    log_mode = ENV['LOG_MODE'] || 'hybrid'

    case log_mode.downcase
    when 'all'
      self.logger.level = Logger::DEBUG
    when 'errors'
      self.logger.level = Logger::ERROR
    when 'hybrid'
      self.logger.level = Logger::INFO
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
student_mvp-0.1.8 lib/logger/logger.rb