class Logger::Application

Description

Logger::Application — Add logging support to your application.

Usage

  1. Define your application class as a sub-class of this class.

  2. Override the run method in your class to do many things.

  3. Instantiate it and invoke start.

Example

class FooApp < Logger::Application
 def initialize(foo_app, application_specific, arguments)
 super('FooApp') # Name of the application.
 end
 def run
 ...
 log(WARN, 'warning', 'my_method1')
 ...
 @log.error('my_method2') { 'Error!' }
 ...
 end
end
status = FooApp.new(....).start

Attributes

appname[R]

Name of the application given at initialize.

Public Class Methods

Logger::Application.new(appname = '') click to toggle source

Args

appname

Name of the application.

Description

Create an instance. Log device is STDERR by default. This can be changed with set_log.

# File lib/logger.rb, line 770
def initialize(appname = nil)
 @appname = appname
 @log = Logger.new(STDERR)
 @log.progname = @appname
 @level = @log.level
end

Public Instance Methods

level=(level) click to toggle source

Set the logging threshold, just like Logger#level=.

# File lib/logger.rb, line 825
def level=(level)
 @level = level
 @log.level = @level
end
log(severity, message = nil, &block) click to toggle source

See Logger#add. This application's appname is used.

# File lib/logger.rb, line 833
def log(severity, message = nil, &block)
 @log.add(severity, message, @appname, &block) if @log
end
log=(logdev) click to toggle source
# File lib/logger.rb, line 818
def log=(logdev)
 set_log(logdev)
end
logger() click to toggle source

Logger for this application. See the class Logger for an explanation.

# File lib/logger.rb, line 794
def logger
 @log
end
logger=(logger) click to toggle source

Sets the logger for this application. See the class Logger for an explanation.

# File lib/logger.rb, line 802
def logger=(logger)
 @log = logger
 @log.progname = @appname
 @log.level = @level
end
set_log(logdev, shift_age = 0, shift_size = 1024000) click to toggle source

Sets the log device for this application. See Logger.new for an explanation of the arguments.

# File lib/logger.rb, line 812
def set_log(logdev, shift_age = 0, shift_size = 1024000)
 @log = Logger.new(logdev, shift_age, shift_size)
 @log.progname = @appname
 @log.level = @level
end
start() click to toggle source

Start the application. Return the status code.

# File lib/logger.rb, line 780
def start
 status = -1
 begin
 log(INFO, "Start of #{ @appname }.")
 status = run
 rescue
 log(FATAL, "Detected an exception. Stopping ... #{$!} (#{$!.class})\n" << $@.join("\n"))
 ensure
 log(INFO, "End of #{ @appname }. (status: #{ status.to_s })")
 end
 status
end

Private Instance Methods

run() click to toggle source
# File lib/logger.rb, line 839
def run
 # TODO: should be an NotImplementedError
 raise RuntimeError.new('Method run must be defined in the derived class.')
end