Class: QuartzTorrent::LogManager

Inherits:
Object
  • Object
show all
Defined in:
lib/quartz_torrent/log.rb

Overview

Class used to control logging.

Constant Summary collapse

@@outputter =
nil
@@defaultLevel =
Log4r::ERROR
@@maxOldLogs =
10
@@maxLogSize =
1048576
@@dest =
nil

Class Method Summary collapse

Class Method Details

.getLogger(name) ⇒ Object

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



59
60
61
62
63
64
65
66
67
68
69
70
71
# 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

.initializeFromEnvObject

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’.



19
20
21
22
23
# 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) ⇒ Object

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



52
53
54
55
56
# 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) ⇒ Object

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.



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 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