Class: PEROBS::ILogger

Inherits:
Monitor
  • Object
show all
Includes:
Singleton
Defined in:
lib/perobs/Log.rb

Overview

The ILogger class is a singleton that provides a common logging mechanism to all objects. It exposes essentially the same interface as the Logger class, just as a singleton and extends fatal to raise an FatalError exception.

Constant Summary collapse

@@options =

Default options to create a logger. Keep 4 log files, each 1MB max.

[ 4, 2**20 ]
@@level =
Logger::INFO
@@formatter =
proc do |severity, time, progname, msg|
  "#{time} #{severity} #{msg}\n"
end
@@logger =
nil

Instance Method Summary collapse

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object

Pass all calls to unknown methods to the @@logger object.



93
94
95
# File 'lib/perobs/Log.rb', line 93

def method_missing(method, *args, &block)
  @@logger.send(method, *args, &block)
end

Instance Method Details

#fatal(msg, &block) ⇒ Object

Print an error message via the Logger and raise a Fit4Ruby::Error. This method should be used to abort the program in case of program logic errors.

Raises:



105
106
107
108
# File 'lib/perobs/Log.rb', line 105

def fatal(msg, &block)
  @@logger.fatal(msg, &block)
  raise FatalError, msg
end

#formatter=(f) ⇒ Object

Set Logger formatter.

Parameters:

  • f (Proc)


69
70
71
# File 'lib/perobs/Log.rb', line 69

def formatter=(f)
  @@formatter = f
end

#level=(l) ⇒ Object

Set log level.

Parameters:

  • l (Logger::WARN, Logger:INFO, etc)


63
64
65
# File 'lib/perobs/Log.rb', line 63

def level=(l)
  @@level = l
end

#open(io) ⇒ Object

Redirect all log messages to the given IO.

Parameters:

  • io (IO)

    Output file descriptor



81
82
83
84
85
86
87
88
89
90
# File 'lib/perobs/Log.rb', line 81

def open(io)
  begin
    @@logger = Logger.new(io, *@@options)
  rescue IOError => e
    @@logger = Logger.new($stderr)
    $stderr.puts "Cannot open log file: #{e.message}"
  end
  @@logger.level = @@level
  @@logger.formatter = @@formatter
end

#options=(o) ⇒ Object

Set Logger options

Parameters:

  • o (Array)

    Optional parameters for Logger.new().



75
76
77
# File 'lib/perobs/Log.rb', line 75

def options=(o)
  @@options = o
end

#respond_to?(method, include_private = false) ⇒ Boolean

Make it properly introspectable.

Returns:

  • (Boolean)


98
99
100
# File 'lib/perobs/Log.rb', line 98

def respond_to?(method, include_private = false)
  @@logger.respond_to?(method)
end