Monitor
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 {Yell::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 |options| self.format = options[:format] end write do |event| message = format.call(event) STDOUT.puts message 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!"
Define your close method with this helper.
@example Closing a file handle
close do @stream.close end
# File lib/yell/adapters/base.rb, line 83 def close( &block ) compile!(:close!, &block) end
Initializes a new Adapter.
You should not overload the constructor, use setup instead.
# File lib/yell/adapters/base.rb, line 137 def initialize( options = {}, &block ) super() # init the monitor superclass reset! setup!(options) # eval the given block block.arity > 0 ? block.call(self) : instance_eval(&block) if block_given? end
Define your open method with this helper.
@example Open a file handle
open do @stream = ::File.open( 'test.log', ::File::WRONLY|::File::APPEND|::File::CREAT ) end
# File lib/yell/adapters/base.rb, line 73 def open( &block ) compile!(:open!, &block) end
Close the adapter (stream, connection, etc).
Adapter classes should provide their own implementation of this method.
# File lib/yell/adapters/base.rb, line 164 def close close! end
Get a pretty string representation of the adapter, including
# File lib/yell/adapters/base.rb, line 169 def inspect inspection = inspectables.map { |m| "#{m}: #{send(m).inspect}" } "#<#{self.class.name} #{inspection * ', '}>" end
The main method for calling the adapter.
The method receives the log `event` and determines whether to actually write or not.
# File lib/yell/adapters/base.rb, line 151 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
Generated with the Darkfish Rdoc Generator 2.