Class Logger::Application
In: lib/logger.rb
Parent: Object

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

Methods

level=   log   log=   new   run   set_log   start  

Included Modules

Logger::Severity

Attributes

appname  [R] 
logdev  [R] 

Public Class methods

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.

[Source]

     # File lib/logger.rb, line 644
644:     def initialize(appname = nil)
645:       @appname = appname
646:       @log = Logger.new(STDERR)
647:       @log.progname = @appname
648:       @level = @log.level
649:     end

Public Instance methods

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

[Source]

     # File lib/logger.rb, line 684
684:     def level=(level)
685:       @level = level
686:       @log.level = @level
687:     end

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

[Source]

     # File lib/logger.rb, line 692
692:     def log(severity, message = nil, &block)
693:       @log.add(severity, message, @appname, &block) if @log
694:     end

[Source]

     # File lib/logger.rb, line 677
677:     def log=(logdev)
678:       set_log(logdev)
679:     end

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

[Source]

     # File lib/logger.rb, line 671
671:     def set_log(logdev, shift_age = 0, shift_size = 1024000)
672:       @log = Logger.new(logdev, shift_age, shift_size)
673:       @log.progname = @appname
674:       @log.level = @level
675:     end

Start the application. Return the status code.

[Source]

     # File lib/logger.rb, line 654
654:     def start
655:       status = -1
656:       begin
657:         log(INFO, "Start of #{ @appname }.")
658:         status = run
659:       rescue
660:         log(FATAL, "Detected an exception. Stopping ... #{$!} (#{$!.class})\n" << $@.join("\n"))
661:       ensure
662:         log(INFO, "End of #{ @appname }. (status: #{ status.to_s })")
663:       end
664:       status
665:     end

Private Instance methods

[Source]

     # File lib/logger.rb, line 698
698:     def run
699:       raise RuntimeError.new('Method run must be defined in the derived class.')
700:     end

[Validate]