Class: Yell::Adapters::Base
- Inherits:
-
Monitor
- Object
- Monitor
- Yell::Adapters::Base
- Includes:
- Helpers::Base, Helpers::Level
- Defined in:
- lib/yell/adapters/base.rb
Overview
This class provides the basic interface for all allowed operations on any adapter implementation. Other adapters should inherit from it for the methods used by the Logger.
Writing your own adapter is really simple. Inherit from the base class and use the ‘setup`, `write` and `close` methods. Yell requires the `write` method to be specified (`setup` and `close` are optional).
The following example shows how to define a basic Adapter to format and print log events to STDOUT:
class PutsAdapter < Yell::Adapters::Base
include Yell::Formatter::Helpers
setup do ||
self.format = [:format]
end
write do |event|
= format.call(event)
STDOUT.puts
end
end
After the Adapter has been written, we need to register it to Yell:
Yell::Adapters.register :puts, PutsAdapter
Now, we can use it like so:
logger = Yell.new :puts
logger.info "Hello World!"
Direct Known Subclasses
Class Method Summary collapse
-
.close(&block) ⇒ Object
Define your close method with this helper.
-
.open(&block) ⇒ Object
Define your open method with this helper.
-
.setup(&block) ⇒ Object
Setup your adapter with this helper method.
-
.write(&block) ⇒ Object
Define your write method with this helper.
Instance Method Summary collapse
-
#close ⇒ Object
Close the adapter (stream, connection, etc).
-
#initialize(options = {}, &block) ⇒ Base
constructor
Initializes a new Adapter.
-
#inspect ⇒ Object
Get a pretty string representation of the adapter, including.
-
#write(event) ⇒ Object
The main method for calling the adapter.
Methods included from Helpers::Level
Constructor Details
#initialize(options = {}, &block) ⇒ Base
Initializes a new Adapter.
You should not overload the constructor, use #setup instead.
136 137 138 139 140 141 142 143 144 |
# File 'lib/yell/adapters/base.rb', line 136 def initialize( = {}, &block ) super() # init the monitor superclass reset! setup!() # eval the given block block.arity > 0 ? block.call(self) : instance_eval(&block) if block_given? end |
Class Method Details
.close(&block) ⇒ Object
Define your close method with this helper.
82 83 84 |
# File 'lib/yell/adapters/base.rb', line 82 def close( &block ) compile!(:close!, &block) end |
.open(&block) ⇒ Object
Define your open method with this helper.
72 73 74 |
# File 'lib/yell/adapters/base.rb', line 72 def open( &block ) compile!(:open!, &block) end |
.setup(&block) ⇒ Object
Setup your adapter with this helper method.
52 53 54 |
# File 'lib/yell/adapters/base.rb', line 52 def setup( &block ) compile!(:setup!, &block) end |
.write(&block) ⇒ Object
Define your write method with this helper.
62 63 64 |
# File 'lib/yell/adapters/base.rb', line 62 def write( &block ) compile!(:write!, &block) end |
Instance Method Details
#close ⇒ Object
Close the adapter (stream, connection, etc).
Adapter classes should provide their own implementation of this method.
163 164 165 |
# File 'lib/yell/adapters/base.rb', line 163 def close close! end |
#inspect ⇒ Object
Get a pretty string representation of the adapter, including
168 169 170 171 |
# File 'lib/yell/adapters/base.rb', line 168 def inspect inspection = inspectables.map { |m| "#{m}: #{send(m).inspect}" } "#<#{self.class.name} #{inspection * ', '}>" end |
#write(event) ⇒ Object
The main method for calling the adapter.
The method receives the log ‘event` and determines whether to actually write or not.
150 151 152 153 154 155 156 157 |
# File 'lib/yell/adapters/base.rb', line 150 def write( event ) synchronize { write!(event) } if write?(event) rescue Exception => e # make sure the adapter is closed and re-raise the exception synchronize { close } raise(e) end |