class Logger::Application
Description¶ ↑
Logger::Application
— Add logging support to your application.
Usage¶ ↑
-
Define your application class as a sub-class of this class.
-
Override the
run
method in your class to do many things. -
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
Constants
- VERSION
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/application.rb, line 53 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/application.rb, line 108 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/application.rb, line 116 def log(severity, message = nil, &block) @log.add(severity, message, @appname, &block) if @log end
log=(logdev)
click to toggle source
# File lib/logger/application.rb, line 101 def log=(logdev) set_log(logdev) end
logger()
click to toggle source
logger=(logger)
click to toggle source
Sets the logger for this application. See the class Logger
for an explanation.
# File lib/logger/application.rb, line 85 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/application.rb, line 95 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/application.rb, line 63 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 })") end status end
Private Instance Methods
run()
click to toggle source
# File lib/logger/application.rb, line 122 def run # TODO: should be an NotImplementedError raise RuntimeError.new('Method run must be defined in the derived class.') end