class QuartzTorrent::LogManager

Class used to control logging.

Public Class Methods

getLogger(name) click to toggle source

Get the logger with the specified name. Currently this returns a log4r Logger.

# File lib/quartz_torrent/log.rb, line 59
def self.getLogger(name)
  if ! @@outputter
    Log4r::Logger.root
  else
    logger = Log4r::Logger[name]
    if ! logger
      logger = Log4r::Logger.new name
      logger.level = @@defaultLevel
      logger.outputters = @@outputter
    end
    logger
  end
end
initializeFromEnv() click to toggle source

Initialize logging based on environment variables. The QUARTZ_TORRENT_LOGFILE variable controls where logging is written, and should be either a file path, ‘stdout’ or ‘stderr’.

# File lib/quartz_torrent/log.rb, line 19
def self.initializeFromEnv
  @@dest = ENV['QUARTZ_TORRENT_LOGFILE']
  @@defaultLevel = parseLogLevel(ENV['QUARTZ_TORRENT_LOGLEVEL'])
  
end
setLevel(name, level) click to toggle source

Set log level for the named logger. The level can be one of fatal, error, warn, info, or debug as a string or symbol.

# File lib/quartz_torrent/log.rb, line 52
def self.setLevel(name, level)
  level = parseLogLevel(level)
  logger = LogManager.getLogger(name)
  logger.level = level
end
setup(&block) click to toggle source

Initialize the log manager. This method expects a block, and the block may call the following methods:

setLogfile(path)
setDefaultLevel(level)
setMaxOldLogs(num)
setMaxLogSize(size)

In the above methods, ‘path` defines where logging is written, and should be either a file path, ’stdout’ or ‘stderr’; ‘level` is a logging level as per setLevel, `num` is an integer, and `size` is a value in bytes.

# File lib/quartz_torrent/log.rb, line 34
def self.setup(&block)
  self.instance_eval &block

  dest = @@dest
  if dest
    if dest.downcase == 'stdout'
      dest = Log4r::Outputter.stdout
    elsif dest.downcase == 'stderr' 
      dest = Log4r::Outputter.stderr
    else
      dest = Log4r::RollingFileOutputter.new('outputter', {filename: dest, maxsize: @@maxLogSize, max_backups: @@maxOldLogs})
    end
  end
  @@outputter = dest
end

Private Class Methods

parseLogLevel(level) click to toggle source
# File lib/quartz_torrent/log.rb, line 95
def self.parseLogLevel(level)
  if level
    if level.is_a? Symbol
      if level == :fatal
        level = Log4r::FATAL
      elsif level == :error
        level = Log4r::ERROR
      elsif level == :warn
        level = Log4r::WARN
      elsif level == :info
        level = Log4r::INFO
      elsif level == :debug
        level = Log4r::DEBUG
      else
        level = Log4r::ERROR
      end
    else
      if level.downcase == 'fatal'
        level = Log4r::FATAL
      elsif level.downcase == 'error'
        level = Log4r::ERROR
      elsif level.downcase == 'warn'
        level = Log4r::WARN
      elsif level.downcase == 'info'
        level = Log4r::INFO
      elsif level.downcase == 'debug'
        level = Log4r::DEBUG
      else
        level = Log4r::ERROR
      end
    end
  else
    level = Log4r::ERROR
  end
  level
end
setDefaultLevel(level) click to toggle source

DSL method used by setup. Set the default log level.

# File lib/quartz_torrent/log.rb, line 81
def self.setDefaultLevel(level)
  @@defaultLevel = parseLogLevel(level)
end
setLogfile(dest) click to toggle source

DSL method used by setup. Set the logfile.

# File lib/quartz_torrent/log.rb, line 76
def self.setLogfile(dest)
  @@dest = dest
end
setMaxLogSize(size) click to toggle source

Max size of a single logfile in bytes

# File lib/quartz_torrent/log.rb, line 91
def self.setMaxLogSize(size)
  @@maxLogSize = size
end
setMaxOldLogs(num) click to toggle source

Set number of old log files to keep when rotating.

# File lib/quartz_torrent/log.rb, line 86
def self.setMaxOldLogs(num)
  @@maxOldLogs = num
end