Module: Loggr::Adapter
- Included in:
- LoggerFactory
- Defined in:
- lib/loggr/adapter.rb,
lib/loggr/adapter/nop.rb,
lib/loggr/adapter/base.rb,
lib/loggr/adapter/rails.rb,
lib/loggr/adapter/slf4j.rb,
lib/loggr/adapter/abstract.rb,
lib/loggr/adapter/buffered.rb
Overview
Defined Under Namespace
Classes: AbstractAdapter, BaseAdapter, BufferedAdapter, NOPAdapter, RailsAdapter, SLF4JAdapter
Constant Summary collapse
- NOP =
THE instance
NOPAdapter.new
- Base =
Okay, basically a singleton thus create instance
BaseAdapter.new
- Rails =
THE Rails backed implementation instance
RailsAdapter.new
- SLF4J =
THE instance of it
SLF4JAdapter.new
- Buffered =
THE instance
BufferedAdapter.new
Instance Method Summary collapse
-
#adapter ⇒ Object
Get the backend, if no backend is defined uses the default backend.
-
#adapter=(new_adapter) ⇒ Object
Set a new adapter, either as string, class or whatever :).
-
#logger(name, options = {}, &block) ⇒ Object
Get a new logger instance for supplied named logger or class name.
-
#mdc ⇒ Object
The Mapped Diagnostic Context is a basically a hash where values can be stored for certain keys, the context must be stored per thread.
Instance Method Details
#adapter ⇒ Object
Get the backend, if no backend is defined uses the default backend.
If running in a rails environment, automatically chooses the rails adapter as a default, else base is used.
35 36 37 |
# File 'lib/loggr/adapter.rb', line 35 def adapter @adapter ||= Object.const_defined?(:Rails) ? Loggr::Adapter::Rails : Loggr::Adapter::Base end |
#adapter=(new_adapter) ⇒ Object
Set a new adapter, either as string, class or whatever :)
41 42 43 |
# File 'lib/loggr/adapter.rb', line 41 def adapter=(new_adapter) @adapter = get_adapter(new_adapter) end |
#logger(name, options = {}, &block) ⇒ Object
Get a new logger instance for supplied named logger or class name.
All adapters must ensure that they provide the same API for creating new loggers. Each logger has a name, further possible options are:
-
‘:to`, filename or IO, where to write the output to
-
‘:level`, Fixnum, starting log level, @see `Loggr::Severity`
-
‘:marker`, String, name of the category/marker
If an adapter does not support setting a specific option, just ignore it.
56 57 58 59 60 61 |
# File 'lib/loggr/adapter.rb', line 56 def logger(name, = {}, &block) use_adapter = .key?(:adapter) ? get_adapter(.delete(:adapter)) : self.adapter use_adapter.logger(name, ).tap do |logger| yield(logger) if block_given? end end |
#mdc ⇒ Object
The Mapped Diagnostic Context is a basically a hash where values can be stored for certain keys, the context must be stored per thread.
The most basic MDC implementation is ‘Thread.local ||= Hash.new`.
If a adapter provides a native MDC implementation ensure it does expose these methods:
-
‘def []=(key, value)`, set a property in the MDC
-
‘def [](key)`, get a property from the MDC
-
‘def delete(key)`, delete a property in the MDC
-
‘def clear()`, deletes all properties from the MDC
-
‘def to_hash`, access MDC as standard ruby hash (might be clone, though!)
Well it should basically behave like a Ruby Hash, eventhough not with all options.
79 80 81 |
# File 'lib/loggr/adapter.rb', line 79 def mdc self.adapter.mdc end |