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:
-
error Display all serious errors
-
warn Warnings that do not trigger an error
-
info Concise runtime information
-
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:
-
Nucleon::Core
(base logging capable object)
Attributes
- String
-
Logger
resource name
This is the string identifier and logger prefix used when logging.
Public Class Methods
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
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
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
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
Initialize a new logging object
TODO: Figure out some way to make the logger system pluggable?
-
Parameters
-
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 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
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
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
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
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
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
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
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
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
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