Class: Nucleon::Util::Logger
- Inherits:
-
Object
- Object
- Nucleon::Util::Logger
- Defined in:
- lib/core/util/logger.rb
Overview
-
Nucleon::Core (base logging capable object)
Constant Summary collapse
- @@level =
Global log level
Can be:
-
:debug
-
:info
-
:warn
-
:error
-
nil
- @@loggers =
Global collection of instantiated loggers
{}
Instance Attribute Summary collapse
-
#resource ⇒ Object
readonly
- String
-
Logger resource name.
Class Method Summary collapse
-
.add_logger(name, logger) ⇒ Object
Add a instantiated logger to the global logger registry.
-
.level ⇒ Object
Check current global log level.
-
.level=(level) ⇒ Object
Set current global log level.
-
.loggers ⇒ Object
Return a reference to all globally instantiated loggers.
-
.set_level(level, logger = nil) ⇒ Object
Set the logging level for either all instantiated loggers or a specified logger.
-
.set_levels(*levels) ⇒ Object
Define a list of Log4r levels.
Instance Method Summary collapse
-
#debug(message) ⇒ Object
Log a debug message.
-
#error(message) ⇒ Object
Log an error message.
-
#info(message) ⇒ Object
Log an info message.
-
#initialize(options = {}) ⇒ Logger
constructor
Initialize a new logging object.
-
#inspect ⇒ Object
Return a string reference that identifies this logger.
-
#level ⇒ Object
Get instance logger level.
-
#level=(level) ⇒ Object
Set instance logger level.
-
#logger=(logger) ⇒ Object
Set current logger object.
-
#warn(message) ⇒ Object
Log a warning message (non error).
Constructor Details
#initialize(options = {}) ⇒ Logger
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:
-
#logger=
-
Nucleon::Config::ensure
205 206 207 208 209 210 211 212 213 214 215 216 217 218 |
# File 'lib/core/util/logger.rb', line 205 def initialize( = {}) if .is_a?(String) = { :logger => } end config = Config.ensure() @resource = config.get(:resource, '') if config.get(:logger, false) self.logger = config[:logger] else self.logger = Log4r::Logger.new(@resource) end end |
Instance Attribute Details
#resource ⇒ Object (readonly)
- String
-
Logger resource name
This is the string identifier and logger prefix used when logging.
241 242 243 |
# File 'lib/core/util/logger.rb', line 241 def resource @resource end |
Class Method Details
.add_logger(name, logger) ⇒ Object
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:
-
::set_level
158 159 160 161 162 163 164 165 |
# File 'lib/core/util/logger.rb', line 158 def self.add_logger(name, logger) logger.outputters = Log4r::StdoutOutputter.new('console') level = Logger.level.nil? ? 'off' : Logger.level set_level(level, logger) @@loggers[name.to_sym] = logger end |
.level ⇒ Object
Check current global log level
-
Parameters
-
Returns
- Symbol
-
Global log level; :debug, :info, :warn, :error
-
Errors
See also:
-
::level=
55 56 57 |
# File 'lib/core/util/logger.rb', line 55 def self.level @@level end |
.level=(level) ⇒ Object
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:
-
::level
-
::set_level
73 74 75 |
# File 'lib/core/util/logger.rb', line 73 def self.level=level @@level = set_level(level) end |
.loggers ⇒ Object
Return a reference to all globally instantiated loggers
-
Parameters
-
Returns
- Hash<Symbol|Log4r>
-
Collection of globally accessible loggers
-
Errors
86 87 88 |
# File 'lib/core/util/logger.rb', line 86 def self.loggers @@loggers end |
.set_level(level, logger = nil) ⇒ Object
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:
-
::level=
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# File 'lib/core/util/logger.rb', line 126 def self.set_level(level, logger = nil) level_sym = level.to_s.downcase.to_sym level_id = level.to_s.upcase if logger.nil? loggers.each do |name, registered_logger| @@loggers[name].level = Log4r.const_get(level_id) end else if logger.levels.include?(level_id) logger.level = Log4r.const_get(level_id) end end level_sym end |
.set_levels(*levels) ⇒ Object
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
105 106 107 108 109 110 |
# File 'lib/core/util/logger.rb', line 105 def self.set_levels(*levels) levels = levels.flatten.collect do |level| level.to_s.upcase end Log4r::Configurator.custom_levels(*levels) end |
Instance Method Details
#debug(message) ⇒ Object
Log a debug message
-
Parameters
- String
-
message Debug related message
-
Returns
- Void
-
This method does not return a value
-
Errors
See also:
-
Nucleon::Util::Console::quiet
317 318 319 320 321 |
# File 'lib/core/util/logger.rb', line 317 def debug() unless Util::Console.quiet @logger.debug() end end |
#error(message) ⇒ Object
Log an error message
-
Parameters
- String
-
message Error message
-
Returns
- Void
-
This method does not return a value
-
Errors
See also:
-
Nucleon::Util::Console::quiet
374 375 376 377 378 |
# File 'lib/core/util/logger.rb', line 374 def error() unless Util::Console.quiet @logger.error() end end |
#info(message) ⇒ Object
Log an info message
-
Parameters
- String
-
message Concise informational message
-
Returns
- Void
-
This method does not return a value
-
Errors
See also:
-
Nucleon::Util::Console::quiet
336 337 338 339 340 |
# File 'lib/core/util/logger.rb', line 336 def info() unless Util::Console.quiet @logger.info() end end |
#inspect ⇒ Object
Return a string reference that identifies this logger
-
Parameters
-
Returns
- String
-
Identification string
-
Errors
229 230 231 |
# File 'lib/core/util/logger.rb', line 229 def inspect "#<#{self.class}: #{@resource}>" end |
#level ⇒ Object
Get instance logger level
-
Parameters
-
Returns
- Integer
-
Return current Log4r::Logger level
-
Errors
See also:
-
Log4r::Logger
297 298 299 |
# File 'lib/core/util/logger.rb', line 297 def level @logger.level end |
#level=(level) ⇒ Object
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
281 282 283 |
# File 'lib/core/util/logger.rb', line 281 def level=level @logger.level = level unless level.nil? end |
#logger=(logger) ⇒ Object
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:
-
::add_logger
256 257 258 259 260 261 262 263 264 |
# File 'lib/core/util/logger.rb', line 256 def logger=logger if logger.is_a?(String) @resource = logger @logger = Log4r::Logger.new(logger) else @logger = logger end self.class.add_logger(@resource, @logger) unless self.class.loggers.has_key?(@resource) end |
#warn(message) ⇒ Object
Log a warning message (non error)
-
Parameters
- String
-
message Warning message
-
Returns
- Void
-
This method does not return a value
-
Errors
See also:
-
Nucleon::Util::Console::quiet
355 356 357 358 359 |
# File 'lib/core/util/logger.rb', line 355 def warn() unless Util::Console.quiet @logger.warn() end end |