Parent

Included Modules

Yell::Adapters::Base

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!"

Public Class Methods

close( &block ) click to toggle source

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
new( options = {}, &block ) click to toggle source

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
open( &block ) click to toggle source

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
setup( &block ) click to toggle source

Setup your adapter with this helper method.

@example

setup do |options|
  @file_handle = File.new( '/dev/null', 'w' )
end
# File lib/yell/adapters/base.rb, line 53
def setup( &block )
  compile!(:setup!, &block)
end
write( &block ) click to toggle source

Define your write method with this helper.

@example Printing messages to file

write do |event|
  @file_handle.puts event.message
end
# File lib/yell/adapters/base.rb, line 63
def write( &block )
  compile!(:write!, &block)
end

Public Instance Methods

close() click to toggle source

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
inspect() click to toggle source

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
write( event ) click to toggle source

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.