Yell - Your Extensible Logging Library

Build Status

Yell works and is tested with ruby 1.8.7, 1.9.x, jruby 1.8 and 1.9 mode, rubinius 1.8 and 1.9 as well as ree.

Installation

System wide:

gem install yell

Or in your Gemfile:

gem "yell"

Usage

On the basics, you can use Yell just like any other logging library with a more sophisticated message formatter.

logger = Yell.new STDOUT

logger.info "Hello World"
#=> "2012-02-29T09:30:00+01:00 [ INFO] 65784 : Hello World"
#    ^                         ^       ^       ^
#    ISO8601 Timestamp         Level   Pid     Message

The strength of Yell, however, comes when using multiple adapters. The already built-in ones are IO-based and require no further configuration. Also, there are additional ones available as separate gems. Please consult the wiki on that - they are listed there.

The standard adapters are:

:stdout : Messages will be written to STDOUT
:stderr : Messages will be written to STDERR
:file : Messages will be written to a file
:datefile : Messages will be written to a timestamped file

Here are some short examples on how to combine them:

Example: Notice messages go into STDOUT and error messages into STDERR
logger = Yell.new do |l|
  l.adapter STDOUT, :level => [:debug, :info, :warn]
  l.adapter STDERR, :level => [:error, :fatal]
end
Example: Typical production Logger

We setup a logger that starts passing messages at the :info level. Severities below :error go into the 'production.log', whereas anything higher is written into the 'error.log'.

logger = Yell.new do |l|
  l.level = :info # will only pass :info and above to the adapters

  l.adapter :datefile, 'production.log', :level => Yell.level.lte(:warn)
  l.adapter :datefile, 'error.log', :level => Yell.level.gte(:error)
end

Further Readings

How To: Setting The Log Level
How To: Formatting Log Messages
How To: Using Adapters
How To: The Datefile Adapter
How To: Different Adapters for Different Log Levels

You can find further examples and additional adapters in the wiki. or have a look into the examples folder.

Copyright © 2011-2012 Rudolf Schmidt, released under the MIT license