class Kafo::Logger

Constants

COLOR_LAYOUT
NOCOLOR_LAYOUT
PATTERN

Attributes

loggers[W]

Public Class Methods

buffer() click to toggle source
# File lib/kafo/logger.rb, line 13
def buffer
  @buffer ||= []
end
buffering?() click to toggle source
# File lib/kafo/logger.rb, line 78
def self.buffering?
  KafoConfigure.verbose.nil? || ((KafoConfigure.verbose && !loggers.detect {|l| l.name == 'verbose'}) || self.loggers.empty?)
end
dump_buffer(buffer) click to toggle source
# File lib/kafo/logger.rb, line 101
def self.dump_buffer(buffer)
  buffer.each do |log|
    self.loggers.each { |logger| logger.send log[0], *log[1], &log[2] }
  end
  buffer.clear
end
dump_errors() click to toggle source
# File lib/kafo/logger.rb, line 90
def self.dump_errors
  unless self.error_buffer.empty?
    loggers.each { |logger| logger.error 'Repeating errors encountered during run:' }
    self.dump_buffer(self.error_buffer)
  end
end
dump_needed?() click to toggle source
# File lib/kafo/logger.rb, line 82
def self.dump_needed?
  !self.buffer.empty?
end
error_buffer() click to toggle source
# File lib/kafo/logger.rb, line 17
def error_buffer
  @error_buffer ||= []
end
loggers() click to toggle source
# File lib/kafo/logger.rb, line 9
def loggers
  @loggers ||= []
end
setup() click to toggle source
# File lib/kafo/logger.rb, line 39
def self.setup
  begin
    FileUtils.mkdir_p(KafoConfigure.config.app[:log_dir], :mode => 0750)
  rescue Errno::EACCES => e
    puts "No permissions to create log dir #{KafoConfigure.config.app[:log_dir]}"
  end

  logger   = Logging.logger['main']
  filename = "#{KafoConfigure.config.app[:log_dir]}/#{KafoConfigure.config.app[:log_name] || 'configure.log'}"
  begin
    logger.appenders = ::Logging.appenders.rolling_file('configure',
                                                        :filename => filename,
                                                        :layout   => NOCOLOR_LAYOUT,
                                                        :truncate => true
    )
    # set owner and group (it's ignored if attribute is nil)
    FileUtils.chown KafoConfigure.config.app[:log_owner], KafoConfigure.config.app[:log_group], filename
  rescue ArgumentError => e
    puts "File #{filename} not writeable, won't log anything to file!"
  end

  logger.level = KafoConfigure.config.app[:log_level]

  fatal_logger           = Logging.logger['fatal']
  fatal_logger.level     = 'fatal'
  layout                 = KafoConfigure.config.app[:colors] ? COLOR_LAYOUT : NOCOLOR_LAYOUT
  fatal_logger.appenders = [::Logging.appenders.stderr(:layout => layout)]
  
  self.loggers = [logger, fatal_logger]
end
setup_verbose() click to toggle source
# File lib/kafo/logger.rb, line 70
def self.setup_verbose
  logger           = Logging.logger['verbose']
  logger.level     = KafoConfigure.config.app[:verbose_log_level]
  layout           = KafoConfigure.config.app[:colors] ? COLOR_LAYOUT : NOCOLOR_LAYOUT
  logger.appenders = [::Logging.appenders.stdout(:layout => layout)]
  self.loggers<< logger
end
to_buffer(buffer, *args) click to toggle source
# File lib/kafo/logger.rb, line 86
def self.to_buffer(buffer, *args)
  buffer << args
end

Public Instance Methods

dump_errors() click to toggle source
# File lib/kafo/logger.rb, line 97
def dump_errors
  self.class.dump_errors
end
log(name, *args, &block) click to toggle source
# File lib/kafo/logger.rb, line 108
def log(name, *args, &block)
  if self.class.buffering?
    self.class.to_buffer(self.class.buffer, name, args, &block)
  else
    self.class.dump_buffer(self.class.buffer) if self.class.dump_needed?
    self.class.loggers.each { |logger| logger.send name, *args, &block }
  end
end