A Writer is an object that inherits from Zend_Log_Writer_Abstract.  A Writer's
    responsibility is to record log data to a storage backend.  
  
      Zend_Log_Writer_Stream sends log
      data to a PHP stream.
    
      To write log data to the PHP output buffer, use the URL php://output.  Alternatively,
      you can may like to send log data directly to a stream like STDERR 
      (php://stderr).
      
      
<?php
$writer = new Zend_Log_Writer_Stream('php://output');
$logger = new Zend_Log($writer);
$logger->info('Informational message');
?>
To write data to a file, use one of the Filesystem URLs:
<?php
$writer = new Zend_Log_Writer_Stream('/path/to/logfile');
$logger = new Zend_Log($writer);
$logger->info('Informational message');
?>
      By default, the stream opens in the append mode ("a").
      To open it with a different mode, the Zend_Log_Writer_Stream constructor
      accepts an optional second parameter for the mode.
    
      The constructor of Zend_Log_Writer_Stream also accepts an existing stream resource:
      
<?php
$stream = @fopen('/path/to/logfile', 'a', false);
if (! $stream) {
    throw new Exception('Failed to open stream');
}        
$writer = new Zend_Log_Writer_Stream($stream);
$logger = new Zend_Log($writer);
$logger->info('Informational message');
?>
      You cannot specify the mode for existing stream resources. Doing so
      causes a Zend_Log_Exception to be thrown.
    
      Zend_Log_Writer_Db writes log information to a database table using
      Zend_Db.  The constructor of Zend_Log_Writer_Db receives
      a Zend_Db_Adapter instance, a table name, and a mapping of database
      columns to event data items:
      
<?php
$params = array ('host'     => '127.0.0.1',
                 'username' => 'malory',
                 'password' => '******',
                 'dbname'   => 'camelot');
$db = Zend_Db::factory('PDO_MYSQL', $params);
$columnMapping = array(array('lvl' => 'priority', 'msg' => 'message'));
$writer = new Zend_Log_Writer_Db($db, 'log_table_name', $columnMapping);
$logger = new Zend_Log($writer);
$logger->info('Informational message');
?>
      The example above writes a single row of low data to the database table named 
      log_table_name table.  The database column named lvl
      receives the priority number and the column named msg receives the
      log messsage.
    
      The Zend_Log_Writer_Null is a stub that does not write log data to anything.
      It is useful for disabling logging or stubbing out logging during tests:
      
<?php
$writer = new Zend_Log_Writer_Null;
$logger = new Zend_Log($writer);
// goes nowhere
$logger->info('Informational message');
?>
      The Zend_Log_Writer_Mock is a very simple writer that records
      the raw data it receives in an array exposed as a public property.
      
      
<?php
$mock = new Zend_Log_Writer_Mock;
$logger = new Zend_Log($mock);
$logger->info('Informational message');
var_dump($mock->events[0]);
// Array
// (
//    [timestamp] => 2007-04-06T07:16:37-07:00
//    [message] => Informational message
//    [priority] => 6
//    [priorityName] => INFO
// )
?>
      To clear the events logged by the mock, simply set $mock->events = array().
    
      There is no composite Writer object. However, a Log instance can write
      to any number of Writers. To do this, use the addWriter()
      method:
    
      
<?php
$writer1 = new Zend_Log_Writer_Stream('/path/to/first/logfile');
$writer2 = new Zend_Log_Writer_Stream('/path/to/second/logfile');
$logger = new Zend_Log();
$logger->addWriter($writer1);
$logger->addWriter($writer2);
// goes to both writers
$logger->info('Informational message');      
?>