A Formatter is an object that is responsible for taking an
describing a log event and outputting a string with a formatted log line.
Some Writers are not line-oriented and cannot use a Formatter. An example is the Database Writer, which inserts the event items directly into database columns. For Writers that cannot support a Formatter, an exception is thrown if you attempt to set a Formatter.
Zend_Log_Formatter_Simple is the default formatter. It is configured
automatically when you specify no formatter. The default configuration is equivalent
to the following:
A formatter is set on an individual Writer object using the Writer's
setFormatter()method:setFormatter($formatter); $logger = new Zend_Log(); $logger->addWriter($writer); $logger->info('there'); // outputs "hello there"
The constructor of
Zend_Log_Formatter_Simpleaccepts a single parameter: the format string. This string contains keys surrounded by percent signs (e.g.
%message%). The format string may contain any key from the event data array. You can retrieve the default keys by using the DEFAULT_FORMAT constant from
Zend_Log_Formatter_Xml formats log data into XML strings.
By default, it automatically logs all items in the event data array:
setFormatter($formatter); $logger = new Zend_Log(); $logger->addWriter($writer); $logger->info('informational message');
The code above outputs the following XML (space added for clarity):
2007-04-06T07:24:37-07:00 informational message 6 INFO
It's possible to customize the root element as well as specify a mapping
of XML elements to the items in the event data array. The constructor
Zend_Log_Formatter_Xml accepts a string with the name of
the root element as the first parameter and an associative array with
the element mapping as the second parameter:
'message', 'level' => 'priorityName')); $writer->setFormatter($formatter); $logger = new Zend_Log(); $logger->addWriter($writer); $logger->info('informational message');The code above changes the root element from its default of
log. It also maps the element
msgto the event data item
message. This results in the following output:
informational message INFO