| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15156 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.log.formatters">
- <title>Formatter</title>
- <para>
- Ein Formatter ist ein Objekt das dafür zuständig ist ein <code>event</code> Array anzunehmen welches ein Log
- Event beschreibt und einen String auszugeben mit einer formatierten Logzeile.
- </para>
- <para>
- 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.
- </para>
- <sect2 id="zend.log.formatters.simple">
- <title>Eingache Formatierung</title>
- <para>
- <classname>Zend_Log_Formatter_Simple</classname> ist der Standard Formatter. Er ist automatisch konfiguriert wenn
- kein Formatter definiert wird. Die Standard Konfiguration ist identisch mit dem folgenden:
- <programlisting role="php"><![CDATA[
- $format = '%timestamp% %priorityName% (%priority%): %message%' . PHP_EOL;
- $formatter = new Zend_Log_Formatter_Simple($format);
- ]]></programlisting>
- </para>
- <para>
- Ein Formatter wird einem individuellen Writer Objekt gesetzt durch verwenden der <code>setFormatter()</code>
- Methode des Writer's:
- <programlisting role="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Simple('Hallo %message%' . PHP_EOL);
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('dort');
- // Gibt "Hallo dort" aus
- ]]></programlisting>
- </para>
- <para>
- Der Konstruktor von <classname>Zend_Log_Formatter_Simple</classname> akzeptiert einen einzelnen Parameter: Den
- Format String. Dieser String enthält Schlüssel die durch Prozentzeichen begrenzt sind
- (z.B. <code>%message%</code>). Der Format String kann jeden Schlüssel des Event Data Arrays enthalten.
- Die Standardschlüssel können durch Verwendung der DEFAULT_FORMAT Konstante von
- <classname>Zend_Log_Formatter_Simple</classname> empfangen werden.
- </para>
- </sect2>
- <sect2 id="zend.log.formatters.xml">
- <title>In XML formatieren</title>
- <para>
- <classname>Zend_Log_Formatter_Xml</classname> formatiert Log Daten in einen XML String. Standardmäßig loggt er
- automatisch alle Elemente des Event Data Arrays:
- <programlisting role="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Xml();
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('Informative Nachricht');
- ]]></programlisting>
- </para>
- <para>
- Der obige Code gibt das folgende XML aus (Leerzeichen werden für Klarstellung hinzugefügt):
- <programlisting role="xml"><![CDATA[
- <logEntry>
- <timestamp>2007-04-06T07:24:37-07:00</timestamp>
- <message>Informative Nachricht</message>
- <priority>6</priority>
- <priorityName>INFO</priorityName>
- </logEntry>
- ]]></programlisting>
- </para>
- <para>
- 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 <classname>Zend_Log_Formatter_Xml</classname> akzeptiert
- einen String mit dem Namen des Root Elements als ersten Parameter und ein assoziatives Array mit den
- gemappten Elementen als zweiten Parameter:
- <programlisting role="php"><![CDATA[
- $writer = new Zend_Log_Writer_Stream('php://output');
- $formatter = new Zend_Log_Formatter_Xml('log',
- array('msg' => 'message',
- 'level' => 'priorityName')
- );
- $writer->setFormatter($formatter);
- $logger = new Zend_Log();
- $logger->addWriter($writer);
- $logger->info('Informative Nachricht');
- ]]></programlisting>
- Der obige Code ändert das Root Element von seinem Standard <code>logEntry</code> zu <code>log</code>.
- Er mappt auch das Element <code>msg</code> zum Event Daten Element <code>message</code>. Das ergibt die
- folgende Ausgabe:
- <programlisting role="xml"><![CDATA[
- <log>
- <msg>Informative Nachricht</msg>
- <level>INFO</level>
- </log>
- ]]></programlisting>
- </para>
- </sect2>
- </sect1>
|