Class: Polylog::MultiProvider
- Inherits:
-
Object
- Object
- Polylog::MultiProvider
- Defined in:
- lib/polylog/multi_provider.rb
Overview
The purpose of a MultiProvider is to provide a default logger instance when requested. Other loggers can be provided by registering them with the provider under the appropriate logger name. So when this name is passed to the ‘logger` method the registered logger instance will be returned.
The example below shows how to use the MultiProvider to send all log messages from all instances of a single class to a log file instead of STDOUT. You might want to do this when debugging the class; you can set the logger level to debug and capture lots of text to a single location.
Examples
provider = Polylog::MultiProvider.new(Logger.new(STDOUT))
provider['MyClass'] = Logger.new('my_class.log')
Polylog.register_provider 'example', provider
Polylog.use_provider 'example'
logger = Polylog.logger # STDOUT logger
my_class_logger = Polylog.logger(MyClass) # 'my_class.log' logger
Instance Attribute Summary collapse
-
#default_logger ⇒ Object
Accessor for getting and setting the default logger.
Instance Method Summary collapse
-
#[](name) ⇒ Object
Returns the logger or ‘nil` if the logger is not present.
-
#[]=(name, logger) ⇒ Object
Add a logger provider under the given name.
-
#initialize(logger) ⇒ MultiProvider
constructor
Create a new MultiProvider configured with the given logger as the default logger.
-
#logger(name) ⇒ Object
Returns the named logger if it is present in the provider.
-
#logger?(name) ⇒ Boolean
Returns ‘true` if the logger is present in the provider.
-
#loggers ⇒ Object
Returns an Array with the names of the loggers present in the provider.
Constructor Details
#initialize(logger) ⇒ MultiProvider
Create a new MultiProvider configured with the given logger as the default logger. Other loggers can be added to the provider. These will be returned by the provider (instead of the default logger) when their name is passed to the ‘logger` method.
logger - The default logger to return.
33 34 35 36 |
# File 'lib/polylog/multi_provider.rb', line 33 def initialize( logger ) @hash = Hash.new @default_logger = logger end |
Instance Attribute Details
#default_logger ⇒ Object
Accessor for getting and setting the default logger.
39 40 41 |
# File 'lib/polylog/multi_provider.rb', line 39 def default_logger @default_logger end |
Instance Method Details
#[](name) ⇒ Object
Returns the logger or ‘nil` if the logger is not present.
name - The logger name as a String.
53 54 55 |
# File 'lib/polylog/multi_provider.rb', line 53 def []( name ) @hash[name] end |
#[]=(name, logger) ⇒ Object
Add a logger provider under the given name.
name - The logger name as a String. logger - The logger.
Returns the logger.
63 64 65 |
# File 'lib/polylog/multi_provider.rb', line 63 def []=( name, logger ) @hash[name] = logger end |
#logger(name) ⇒ Object
Returns the named logger if it is present in the provider. If the named logger is not present then the default logger is returned.
name - The logger name as a String.
45 46 47 48 |
# File 'lib/polylog/multi_provider.rb', line 45 def logger( name ) return default_logger if name.nil? @hash.fetch(name, default_logger) end |
#logger?(name) ⇒ Boolean
Returns ‘true` if the logger is present in the provider.
name - The logger name as a String.
75 76 77 |
# File 'lib/polylog/multi_provider.rb', line 75 def logger?( name ) @hash.key? name end |
#loggers ⇒ Object
Returns an Array with the names of the loggers present in the provider.
68 69 70 |
# File 'lib/polylog/multi_provider.rb', line 68 def loggers @hash.keys end |