Class: Logger::Application

Inherits:
Object
  • Object
show all
Includes:
Severity
Defined in:
lib/logger.rb

Overview

Description

Application -- Add logging support to your application.

Usage

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

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

  3. Instantiate it and invoke 'start'.

Example

class FooApp < 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

Constant Summary

Constants included from Severity

Severity::DEBUG, Severity::ERROR, Severity::FATAL, Severity::INFO, Severity::UNKNOWN, Severity::WARN

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(appname = nil) ⇒ Application

Synopsis

Application.new(appname = '')

Args

appname

Name of the application.

Description

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



645
646
647
648
649
650
# File 'lib/logger.rb', line 645

def initialize(appname = nil)
  @appname = appname
  @log = Logger.new(STDERR)
  @log.progname = @appname
  @level = @log.level
end

Instance Attribute Details

#appnameObject (readonly)

Returns the value of attribute appname



628
629
630
# File 'lib/logger.rb', line 628

def appname
  @appname
end

#logdevObject (readonly)

Returns the value of attribute logdev



629
630
631
# File 'lib/logger.rb', line 629

def logdev
  @logdev
end

Instance Method Details

#level=(level) ⇒ Object

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



685
686
687
688
# File 'lib/logger.rb', line 685

def level=(level)
  @level = level
  @log.level = @level
end

#log(severity, message = nil, &block) ⇒ Object

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



693
694
695
# File 'lib/logger.rb', line 693

def log(severity, message = nil, &block)
  @log.add(severity, message, @appname, &block) if @log
end

#log=(logdev) ⇒ Object



678
679
680
# File 'lib/logger.rb', line 678

def log=(logdev)
  set_log(logdev)
end

#set_log(logdev, shift_age = 0, shift_size = 1024000) ⇒ Object

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



672
673
674
675
676
# File 'lib/logger.rb', line 672

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

#startObject

Start the application. Return the status code.



655
656
657
658
659
660
661
662
663
664
665
666
# File 'lib/logger.rb', line 655

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