class Nucleon::Util::Logger

Logger

The Nucleon::Util::Logger class defines a logging interface that wraps the Log4r gem interface to provide all Nucleon classes with logging capabilities.

Logging methods exposed:

  1. error Display all serious errors

  2. warn Warnings that do not trigger an error

  3. info Concise runtime information

  4. debug Potentially verbose debug information

Note: This is the first Nucleon library loaded so it can NOT depend on any other library or core object.

See also:

Attributes

resource[R]
String

Logger resource name

This is the string identifier and logger prefix used when logging.

Public Class Methods

add_logger(name, logger) click to toggle source

Add a instantiated logger to the global logger registry.

TODO: Is there a better way to handle the outputter for more flexibility?

  • Parameters

    • Symbol, String

      name Logger name

    • Log4r

      logger Log4r instance to register

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

    # File lib/core/util/logger.rb
158 def self.add_logger(name, logger)
159   logger.outputters = Log4r::StdoutOutputter.new('console')
160 
161   level = Logger.level.nil? ? 'off' : Logger.level
162   set_level(level, logger)
163 
164   @@loggers[name.to_sym] = logger
165 end
level() click to toggle source

Check current global log level

  • Parameters

  • Returns

    • Symbol

      Global log level; :debug, :info, :warn, :error

  • Errors

See also:

   # File lib/core/util/logger.rb
55 def self.level
56   @@level
57 end
level=(level) click to toggle source

Set current global log level

  • Parameters

    • Symbol

      level Global log level; :debug, :info, :warn, :error

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

   # File lib/core/util/logger.rb
73 def self.level=level
74   @@level = set_level(level)
75 end
loggers() click to toggle source

Return a reference to all globally instantiated loggers

  • Parameters

  • Returns

    • Hash<Symbol|Log4r>

      Collection of globally accessible loggers

  • Errors

   # File lib/core/util/logger.rb
86 def self.loggers
87   @@loggers
88 end
new(options = {}) click to toggle source

Initialize a new logging object

TODO: Figure out some way to make the logger system pluggable?

  • Parameters

    • Hash

      options Logger options

      • String

        :resource Logger resource identifier (also serves as prefix)

      • nil, Log4r

        :logger Log4r logger of nil if new one created

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

    # File lib/core/util/logger.rb
205 def initialize(options = {})
206   if options.is_a?(String)
207     options = { :logger => options }
208   end
209   config = Config.ensure(options)
210 
211   @resource = config.get(:resource, '')
212 
213   if config.get(:logger, false)
214     self.logger = config[:logger]
215   else
216     self.logger = Log4r::Logger.new(@resource)
217   end
218 end
set_level(level, logger = nil) click to toggle source

Set the logging level for either all instantiated loggers or a specified logger.

  • Parameters

    • Symbol, String

      level Global log level; :debug, :info, :warn, :error

    • Log4r

      logger Log4r instance to set log level or all if none provided

  • Returns

    • Symbol

      Return the current global log level

  • Errors

See also:

    # File lib/core/util/logger.rb
126 def self.set_level(level, logger = nil)
127   level_sym = level.to_s.downcase.to_sym
128   level_id  = level.to_s.upcase
129 
130   if logger.nil?
131     loggers.each do |name, registered_logger|
132       @@loggers[name].level = Log4r.const_get(level_id)
133     end
134   else
135     if logger.levels.include?(level_id)
136       logger.level = Log4r.const_get(level_id)
137     end
138   end
139   level_sym
140 end
set_levels(*levels) click to toggle source

Define a list of Log4r levels

Due to how Log4r is built this can only happen at the very beginning of our execution run before any loggers are instantiated.

This should never be called directly outside of this class.

  • Parameters

    • Symbol, String, Array<Symbol, String>

      levels Available log levels

  • Returns

    • Void

      This method does not return a value

  • Errors

    # File lib/core/util/logger.rb
105 def self.set_levels(*levels)
106   levels = levels.flatten.collect do |level|
107     level.to_s.upcase
108   end
109   Log4r::Configurator.custom_levels(*levels)
110 end

Public Instance Methods

debug(message) click to toggle source

Log a debug message

  • Parameters

    • String

      message Debug related message

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

    # File lib/core/util/logger.rb
317 def debug(message)
318   unless Util::Console.quiet
319     @logger.debug(message)
320   end
321 end
error(message) click to toggle source

Log an error message

  • Parameters

    • String

      message Error message

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

    # File lib/core/util/logger.rb
374 def error(message)
375   unless Util::Console.quiet
376     @logger.error(message)
377   end
378 end
info(message) click to toggle source

Log an info message

  • Parameters

    • String

      message Concise informational message

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

    # File lib/core/util/logger.rb
336 def info(message)
337   unless Util::Console.quiet
338     @logger.info(message)
339   end
340 end
inspect() click to toggle source

Return a string reference that identifies this logger

  • Parameters

  • Returns

    • String

      Identification string

  • Errors

    # File lib/core/util/logger.rb
229 def inspect
230   "#<#{self.class}: #{@resource}>"
231 end
level() click to toggle source

Get instance logger level

  • Parameters

  • Returns

    • Integer

      Return current Log4r::Logger level

  • Errors

See also:

  • Log4r::Logger

    # File lib/core/util/logger.rb
297 def level
298   @logger.level
299 end
level=(level) click to toggle source

Set instance logger level

NOTE: This will detach the logger from the global log level!

  • Parameters

    • Integer

      level Log4r::Logger level

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

  • Log4r::Logger

    # File lib/core/util/logger.rb
281 def level=level
282   @logger.level = level unless level.nil?
283 end
logger=(logger) click to toggle source

Set current logger object

  • Parameters

    • String, Log4r

      logger Log4r object or string resource name

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

    # File lib/core/util/logger.rb
256 def logger=logger
257   if logger.is_a?(String)
258     @resource = logger
259     @logger   = Log4r::Logger.new(logger)
260   else
261     @logger = logger
262   end
263   self.class.add_logger(@resource, @logger) unless self.class.loggers.has_key?(@resource)
264 end
warn(message) click to toggle source

Log a warning message (non error)

  • Parameters

    • String

      message Warning message

  • Returns

    • Void

      This method does not return a value

  • Errors

See also:

    # File lib/core/util/logger.rb
355 def warn(message)
356   unless Util::Console.quiet
357     @logger.warn(message)
358   end
359 end