public function log($event, $level = null)
{
if (empty($this->_handlers)) {
throw new Horde_Log_Exception('No handlers were added');
}
// Create an event array from the given arguments.
if (is_array($event)) {
// If we are passed an array, it must contain 'message'
// and 'level' indices.
if (!isset($event['message'])) {
throw new Horde_Log_Exception('Event array did not contain a message');
}
if (!isset($event['level'])) {
if (is_null($level)) {
throw new Horde_Log_Exception('Event array did not contain a log level');
}
$event['level'] = $level;
}
} else {
// Create an event array from the message and level
// arguments.
$event = array('message' => $event, 'level' => $level);
}
if (($level = array_search($event['level'], $this->_levels)) === false) {
throw new Horde_Log_Exception('Bad log level: ' . $event['level']);
}
// Fill in the level name and timestamp for filters, formatters,
// handlers.
$event['levelName'] = $level;
if (!isset($event['timestamp'])) {
$event['timestamp'] = date('c');
}
// If any global filter rejects the event, don't log it.
foreach ($this->_filters as $filter) {
if (!$filter->accept($event)) {
return;
}
}
foreach ($this->_handlers as $handler) {
$handler->log($event);
}
}