Formatter
Ein Formatter ist ein Objekt das dafür zuständig ist ein event Array anzunehmen welches ein Log
Event beschreibt und einen String auszugeben mit einer formatierten Logzeile.
Einige Writer sind nicht zeilen-orientiert und können keinen Formatter benutzen. Ein Beispiel ist der
Datenbank Writer, welcher die Events direkt in die Datenbankzeilen einfügt. Für Writer die Formatter nicht
unterstützen können, wird eine Ausnahme geworfen wenn versucht wird einen Formatter zu setzen.
Eingache Formatierung
Zend_Log_Formatter_Simple ist der Standard Formatter. Er ist automatisch konfiguriert wenn
kein Formatter definiert wird. Die Standard Konfiguration ist identisch mit dem folgenden:
Ein Formatter wird einem individuellen Writer Objekt gesetzt durch verwenden der setFormatter()
Methode des Writer's:
setFormatter($formatter);
$logger = new Zend_Log();
$logger->addWriter($writer);
$logger->info('dort');
// Gibt "Hallo dort" aus
]]>
Der Konstruktor von Zend_Log_Formatter_Simple akzeptiert einen einzelnen Parameter: Den
Format String. Dieser String enthält Schlüssel die durch Prozentzeichen begrenzt sind
(z.B. %message%). Der Format String kann jeden Schlüssel des Event Data Arrays enthalten.
Die Standardschlüssel können durch Verwendung der DEFAULT_FORMAT Konstante von
Zend_Log_Formatter_Simple empfangen werden.
In XML formatieren
Zend_Log_Formatter_Xml formatiert Log Daten in einen XML String. Standardmäßig loggt er
automatisch alle Elemente des Event Data Arrays:
setFormatter($formatter);
$logger = new Zend_Log();
$logger->addWriter($writer);
$logger->info('Informative Nachricht');
]]>
Der obige Code gibt das folgende XML aus (Leerzeichen werden für Klarstellung hinzugefügt):
2007-04-06T07:24:37-07:00
Informative Nachricht
6
INFO
]]>
Es ist möglich das Root Element anzupassen sowie ein Mapping von XML Elementen zu den Elementen im
Event Data Array zu definieren. Der Konstruktor von Zend_Log_Formatter_Xml akzeptiert
einen String mit dem Namen des Root Elements als ersten Parameter und ein assoziatives Array mit den
gemappten Elementen als zweiten Parameter:
'message',
'level' => 'priorityName')
);
$writer->setFormatter($formatter);
$logger = new Zend_Log();
$logger->addWriter($writer);
$logger->info('Informative Nachricht');
]]>
Der obige Code ändert das Root Element von seinem Standard logEntry zu log.
Er mappt auch das Element msg zum Event Daten Element message. Das ergibt die
folgende Ausgabe:
Informative Nachricht
INFO
]]>